Почему в Perl я получаю синтаксическую ошибку при попытке использовать строку eval? - PullRequest
1 голос
/ 04 августа 2009

Почему это не работает?

eval "$response = $ua->request($r);"
print "$@";

дает:

syntax error at (eval 8) line 1, near "=" 

Ответы [ 3 ]

22 голосов
/ 04 августа 2009

Лучший вопрос: почему вы используете строку eval вместо блока eval?

eval { $response = $ua->request($r); }
print "$@";
15 голосов
/ 04 августа 2009

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

eval '$response = $ua->request($r)';
2 голосов
/ 04 августа 2009

Еще лучший вопрос: почему вы используете eval? Я подозреваю, что вы используете LWP::UserAgent, и если вы не реализуете свой собственный объект запроса, метод 'request` вряд ли умрет.

Итак, почему бы просто не использовать:

$response = $ua->request($r);

...