如何在Perl中传递名称 - 值对作为参数

时间:2010-12-06 10:00:06

标签: perl string escaping

我认为这是非常基本的问题,但我没有理解。

我正在使用LWP :: UserAgent包在perl脚本中构建一个post请求。 代码如下:

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

以上代码不起作用&给出以下错误 -

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

但是当我直接将postDataStr的值传递给post方法时,它的效果非常好,如下所示:

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

我尝试了一些选项,例如转义{使用反斜杠(\ {)但没有任何效果......

有人能提出什么建议吗?谢谢!

1 个答案:

答案 0 :(得分:6)

{name => 'ankur434'}

是哈希引用。

"{name => \'ankur434\'}"
正如您的变量名所示,

是一个字符串。 Perl不会自动将后者转换为前者。 您似乎认为在Perl中,只能将字符串分配给变量或传递给子例程。 不是这种情况。只需使用

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