En Perl, ¿por qué recibo un error de sintaxis cuando intento usar la evaluación de cadena?
Pregunta
¿Por qué no funciona esto?
eval "$response = $ua->request($r);"
print "$@";
da:
syntax error at (eval 8) line 1, near "="
Solución
No funciona porque la cadena entre comillas dobles está sujeta a interpolación, lo que no va a funcionar bien, con esas variables expandidas en su lugar. Y necesita un punto y coma fuera de su evaluación, no tanto dentro de él. Pruebe comillas simples así:
eval '$response = $ua->request($r)';
Otros consejos
Una mejor pregunta es ¿por qué está utilizando una evaluación de cadena, en lugar de una evaluación de bloque?
eval { $response = $ua->request($r); }
print "$@";
Una pregunta aún mejor es ¿por qué estás usando eval en primer lugar? Sospecho que está utilizando LWP :: UserAgent
y, a menos que implemente su propio objeto de solicitud, es poco probable que el método 'request' muera.
Por lo tanto, ¿por qué no simplemente usar:
$response = $ua->request($r);
?
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow