2009-06-15 11 views
6

Perl CGIプログラムでURLパラメータを読み取るにはどうすればよいですか?Perl CGIプログラムでURLパラメータを読み取るにはどうすればよいですか?

+5

Stackoverflowは多くの人には行き詰まり、いくつかの検索ではGoogleの "I feel lucky"のポイントがあります。上のこれらのコメントは役に立たないノイズであり、コメントのためにdownvotingを追加するためにstackexchangeを請う。 – ctpenrose

+1

聞こえます。特に、私の答えが示すように、正解にかなりの詳細がある可能性があり、Google検索は必ずしもそれをすべて上げるわけではない – ysth

答えて

12

GETリクエスト、CGIは、指定されたパラメータを解析し、param()メソッドで利用可能にします。 POSTリクエストについては

param()はPOSTデータからパラメータを返しますが、URL自体にクエリ文字列で指定するパラメータは、まだurl_param()方法からご利用いただけます。 (これは、POST要求が$CGI::POST_MAXより大きい場合に役立ちます;その場合、CGIはpostdataを破棄しますが、どのような要求で良いエラーメッセージを出すかを識別するクエリ文字列パラメータを持つことができます)。

についてISINDEXスタイルがを要求し、要求されたキーワードがkeywords()方法を経由して利用できるだけでなく、のどの「キーワード」パラメータでparam()経由。

更新:「URLパラメータ」でパラメータ以外のものを指定した場合、url()メソッドは要求されたURLのすべてまたは一部を提供します。 OBTAINING THE SCRIPT'S URLを参照してください。

3

あなたがそのようなysthで述べたように、しかし、あなたが本当に生の入力をしたい場合、それは以下を通じて利用可能だとしてURLパーサーを使用することをお勧めします:

GETのために:POST用

$contents = $ENV{'QUERY_STRING'}; 

$contents = <STDIN>; 
3

ので、試してみてくださいコード:

my @names = $query->param; 
foreach $name (@names) { 
    if ( $name =~ /\_/) { 
     next; 
    } else { 
     print "<p> ".$name."\t=\t".$query->param($name) . "</p>\n"; 
    } 
} 
関連する問題