2010-12-06 5 views
0

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

Я использую пакет LWP :: UserAgent для создания запроса на отправку в 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, чтобы опубликовать метод, он работает прекрасно, как показано ниже:

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

Я попробовал несколько вариантов, как избежать {с обратной косой черты (\ {), но ничего не получалось ...

Может кто-нибудь предложить что-нибудь? Благодаря!

+1

нижеследующая ошибка ......? – musiKk 2010-12-06 10:10:56

ответ

6
{name => 'ankur434'} 

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

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

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

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

Спасибо. Это сработало. Благодаря тонну! – 2010-12-06 10:31:21

Смежные вопросы