• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:オブジェクト作成の順番)

Perlのオブジェクト作成順番による$temp_pathの挙動について

このQ&Aのポイント
  • PerlのCGIモジュールでオブジェクトを作成する順番によって、$temp_pathに値が入るかどうかが異なる現象が発生しています。
  • 正常に$temp_pathに値が入るケースでは、最初に作成したオブジェクトを使用してCGIのメソッドを呼び出しています。
  • この現象は、CGIモジュールの仕様によるものであり、最初に作成したオブジェクト以外を使用すると$temp_pathに値が入らない仕様となっています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

CGIスクリプトにはWebサーバから標準入力(STDIN)でデータが渡されます。 そうじゃないのもありますけど。 CGI->new()とすると標準入力から読み取ろうとします。 CGI->new()を二つ実行すると、一つ目のCGI->new()が標準入力を掴んで、 二つ目のCGI->new()ではパラメータが取れません。 したがって、通常CGI->new()は一つだけ生成します。 一方のCGI->new()はhtml生成用などで、パラメータを取ったりアップロードファイルを読んだりする必要がないときは、 CGI->new(""); などとすることで、標準入力を掴まないCGIオブジェクトを生成できます。

investigate
質問者

お礼

参考になりました。 ありがとうございました。

investigate
質問者

補足

1つ目しかパラメータが取得できないのですね。 $qも別の処理に使っているのですが、入力した値をとるような処理ではないため 2つ目に作成されても問題なく動いたんですね。 お手数をお掛けして大変申し訳ないのですが、 1つ目しかパラメータの取得が出来ないことについて書かれた資料はご存じないでしょうか?

関連するQ&A