質問: "") { print "param is exist\n"; } else { print "param is empty\n"; 実行結果として gif-test.cgi param is empty となります。 httpd.conf で script alias /cgi-bin/ "/usr/local/apache2/cgi-bin/" を有効にしています。
回答: >$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 "", ; } else { $query = $env{'query_string'}; } という感じで、リクエストの種類(getとかpostとかの種類)を判断して、パラメータを標準入力から拾うか、環境変数の「query_string」から拾う。 拾った「パラメータ列」は「デコードされてない」ので、自分で解析して、自分でパラメータを「名前」と「値」に分離しないといけない。 つまり、呼び出し時に と呼んでいたら、環境変数の「query_string」には「num=9」が入っているし、 と呼んでいたら「query_string」には「num=9&data=aaa」が入っているので、自分で文字列解析して、自前で名前と値を取り出さないとならない。