2010-12-06 10 views
0

これは非常に基本的なperlの質問だと思うが、私はそれを理解していない。Perlの引数として名前と値のペアを渡す方法

私は、LWP :: UserAgentパッケージを使用して、perlスクリプトで投稿リクエストを作成しています。次のように コードは次のとおりです。

my $urlStr = "http://localhost/testproj/AServlet"; 
my $postDataStr = "{name => \'ankur434\'}"; 
my $response = $ua->post($urlStr, $postDataStr); 

上記のコードは、&を動作しません、次のエラーを与える - 私は直接メソッドを投稿するpostDataStrの値を渡すとき

<Dec 6, 2010 3:15:54 PM IST> <Error> <HTTP> <BEA-101215> <Malformed Request "/testproj/AServlet". Request parsing failed, Code: -1> 

はしかし、それは完璧に動作しますが、似以下に示す:

my $response = $ua->post($urlStr, {name => 'ankur434'}); 

私はバックスラッシュでエスケープ{のようないくつかのオプションを試してみました({\)が、何も働いていない...

誰かが何か提案できますか?ありがとう!

+1

エラーの後......? – musiKk

答えて

6
{name => 'ankur434'} 

はハッシュリファレンスです。

"{name => \'ankur434\'}" 

は、変数名のとおり、文字列です。 Perlは自動的に後者に変換しません。 Perlでは、文字列だけが変数に割り当てられたり、サブルーチンに渡されたりするという印象を受けているようです。 これは当てはまりません。ただ使用する

my $urlStr = "http://localhost/testproj/AServlet"; 
my $postData = {name => 'ankur434'}; 
my $response = $ua->post($urlStr, $postData); 
+0

ありがとうございます。出来た。ありがとう、トン! –

+0

こんにちは、別の関連する質問があります。ハッシュリファレンスで文字列変数を渡す必要があります。それは次のようなものです:my $ tempStr = '';私のanotherTempStr = {$ tempStr};それは動作しません。私に何ができる?私はグーグルではありますが、まだ解決策は見つかりませんでした。ありがとう。 –

+0

心配はいりません。私は考え出した。次のヘルプ - サブfoo { my $ hash_ref; $ hash_ref - > {'key1'} = 'value1';$ hash_ref - > {'key2'} = 'value2'; $ hash_ref - > {'key3'} = 'value3'; return $ hash_ref; } my $ hash_ref = foo(); –

関連する問題