kee*_*ple 0 string perl escaping
我认为这是非常基本的问题,但我没有理解.
我正在使用LWP :: UserAgent包在perl脚本中构建一个post请求.代码如下:
my $urlStr = "http://localhost/testproj/AServlet";
my $postDataStr = "{name => \'ankur434\'}";
my $response = $ua->post($urlStr, $postDataStr);
Run Code Online (Sandbox Code Playgroud)
上面的代码不起作用并给出以下错误 -
<Dec 6, 2010 3:15:54 PM IST> <Error> <HTTP> <BEA-101215> <Malformed Request "/testproj/AServlet". Request parsing failed, Code: -1>
Run Code Online (Sandbox Code Playgroud)
但是当我直接将postDataStr的值传递给post方法时,它的效果非常好,如下所示:
my $response = $ua->post($urlStr, {name => 'ankur434'});
Run Code Online (Sandbox Code Playgroud)
我尝试了一些选项,例如转义{使用反斜杠(\ {)但没有任何效果......
谁能提出建议?谢谢!
{name => 'ankur434'}
Run Code Online (Sandbox Code Playgroud)
是一个哈希引用.
"{name => \'ankur434\'}"
Run Code Online (Sandbox Code Playgroud)
是,如您的变量名称所示,是一个字符串.Perl不会自动将后者转换为前者.您似乎认为在Perl中,只能将字符串分配给变量或传递给子例程.不是这种情况.只是用
my $urlStr = "http://localhost/testproj/AServlet";
my $postData = {name => 'ankur434'};
my $response = $ua->post($urlStr, $postData);
Run Code Online (Sandbox Code Playgroud)