Как передать пару имя-значение в качестве аргумента в Perl - PullRequest
0 голосов
/ 06 декабря 2010

Я думаю, что это очень простой вопрос Perl, но я не могу его решить.

Я использую пакет LWP :: UserAgent для создания запроса post в сценарии perl.Код выглядит следующим образом:

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 Ответ

6 голосов
/ 06 декабря 2010
{name => 'ankur434'}

является ссылкой на хеш.

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

- это, как указывает ваша переменная, строка. Perl не конвертирует последний автоматически в первый. Кажется, у вас сложилось впечатление, что в Perl только строки могут быть назначены переменным или переданы подпрограммам. Это не вариант. Просто используйте

my $urlStr = "http://localhost/testproj/AServlet";
my $postData = {name => 'ankur434'};
my $response = $ua->post($urlStr, $postData);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...