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

发布于 2024-10-06 05:23:52 字数 700 浏览 3 评论 0原文

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

我正在使用 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'});

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

任何人都可以提出建议吗?谢谢!

I think this is very basic perl question but I am not getting it through.

I am using LWP::UserAgent package to build a post request in perl script.
The code is as follows:

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

The above code doesn't work & gives following error -

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

However when I directly pass postDataStr's value to post method, it works perfectly well, like shown below:

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

I tried few options like escaping { with backward slash (\{) but nothing worked...

Can anyone suggest something? Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

电影里的梦 2024-10-13 05:23:52
{name => 'ankur434'}

是一个哈希引用。

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

正如您的变量名称所示,是一个字符串。
Perl 不会自动将后者转换为前者。
您似乎有这样的印象:在 Perl 中,只有字符串可以分配给变量或传递给子例程。
事实并非如此。只需使用

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

is a hash reference.

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

is, as your variable name indicates, a string.
Perl does not automatically convert the latter to the former.
You seem to be under the impression that in Perl, only strings can be assigned to variables or passed to subroutines.
This is not the case. Just use

my $urlStr = "http://localhost/testproj/AServlet";
my $postData = {name => 'ankur434'};
my $response = $ua->post($urlStr, $postData);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文