Почему в Perl я получаю синтаксическую ошибку при попытке использовать строковую оценку?
Вопрос
Почему это не работает?
eval "$response = $ua->request($r);"
print "$@";
дает:
syntax error at (eval 8) line 1, near "="
Решение
Это не работает, потому что ваша строка в двойных кавычках подлежит интерполяции, которая не пройдет хорошо, если эти переменные будут развернуты на месте.И вам нужна точка с запятой вне вашего eval, а не внутри него.Попробуйте использовать одинарные кавычки следующим образом:
eval '$response = $ua->request($r)';
Другие советы
Лучший вопрос: почему вы используете строковое значение вместо блочного?
eval { $response = $ua->request($r); }
print "$@";
Еще лучше вопрос: почему вы вообще используете eval?Я подозреваю, что вы используете LWP::UserAgent
и если вы не реализуете свой собственный объект запроса, метод «запроса» вряд ли умрет.
Таким образом, почему бы просто не использовать:
$response = $ua->request($r);
?
Не связан с StackOverflow