En Perl, ¿por qué recibo un error de sintaxis cuando intento usar la evaluación de cadena?

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

  •  22-07-2019
  •  | 
  •  

Pregunta

¿Por qué no funciona esto?

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

da:

syntax error at (eval 8) line 1, near "=" 
¿Fue útil?

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
scroll top