• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:cgi(perl)でパラメータが渡せない)

cgi(perl)でパラメータが渡せない

このQ&Aのポイント
  • cgi(perl)でパラメータが正しく渡されない問題について
  • パラメータが伝わらない原因と解決策について
  • cgi(perl)のパラメータに関する問題を解決する方法

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

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

>$prm0 = @ARGV[0]; 何これ? 何がやりたいのか判らん。 「CGIとして呼び出したperlのスクリプトでは、フォームからのパラメータは、ARGVには入って来ない」のだけど(ARGVは常に「空配列」になる) フォームからパラメータを受け取る場合は #!/usr/bin/perl (略) use CGI; my $q = CGI->new(); (略) $num = $q->param('num'); って感じで「CGIモジュール」と言うのを使う。 当然、perl本体に「CGIモジュール」がインストール済みである必要がある。 「CGIモジュール」をインストールできない場合は my $query; if ($ENV{'REQUEST_METHOD'} eq "POST") { $query = join "", <STDIN>; } else { $query = $ENV{'QUERY_STRING'}; } という感じで、リクエストの種類(GETとかPOSTとかの種類)を判断して、パラメータを標準入力から拾うか、環境変数の「QUERY_STRING」から拾う。 拾った「パラメータ列」は「デコードされてない」ので、自分で解析して、自分でパラメータを「名前」と「値」に分離しないといけない。 つまり、呼び出し時に <iframe src="/cgi-bin/gif-test.cgi?num=9"></iframe> と呼んでいたら、環境変数の「QUERY_STRING」には「num=9」が入っているし、 <iframe src="/cgi-bin/gif-test.cgi?num=9&data=aaa"></iframe> と呼んでいたら「QUERY_STRING」には「num=9&data=aaa」が入っているので、自分で文字列解析して、自前で名前と値を取り出さないとならない。

junh1109
質問者

お礼

ご回答ありがとうございました。 CGI モジュールはインストールされておりましたので use CGI; を追加してご指示のようにしたら動作しました。 感謝申し上げます。 さらに $prm0 = @ARGV[0]; >何これ? >何がやりたいのか判らん。 についてですが、beginners.atompro.net/sub_ccounter.html というサイトで紹介されている cconter.cgi に記載されている 方法をまねてみました。

関連するQ&A