Почему в Perl я получаю синтаксическую ошибку при попытке использовать строковую оценку?

StackOverflow https://stackoverflow.com/questions/1227605

  •  22-07-2019
  •  | 
  •  

Вопрос

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

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);

?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top