- ベストアンサー
cgi(perl)でパラメータが渡せない
- cgi(perl)でパラメータが正しく渡されない問題について
- パラメータが伝わらない原因と解決策について
- cgi(perl)のパラメータに関する問題を解決する方法
- みんなの回答 (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」が入っているので、自分で文字列解析して、自前で名前と値を取り出さないとならない。
お礼
ご回答ありがとうございました。 CGI モジュールはインストールされておりましたので use CGI; を追加してご指示のようにしたら動作しました。 感謝申し上げます。 さらに $prm0 = @ARGV[0]; >何これ? >何がやりたいのか判らん。 についてですが、beginners.atompro.net/sub_ccounter.html というサイトで紹介されている cconter.cgi に記載されている 方法をまねてみました。