En Perl, pourquoi une erreur de syntaxe se produit-elle lorsque j'essaie d'utiliser string eval?
Question
Pourquoi ça ne marche pas?
eval "$response = $ua->request($r);"
print "$@";
donne:
syntax error at (eval 8) line 1, near "="
La solution
Cela ne fonctionne pas car votre chaîne entre guillemets est sujette à une interpolation, ce qui ne va pas bien se passer, ces variables étant développées sur place. Et vous avez besoin d'un point-virgule en dehors de votre évaluation, pas tellement à l'intérieur. Essayez des guillemets simples comme ceci:
eval '$response = $ua->request($r)';
Autres conseils
Une meilleure question est de savoir pourquoi vous utilisez une chaîne eval plutôt qu'un bloc eval?
eval { $response = $ua->request($r); }
print "$@";
Une question encore meilleure est la suivante: pourquoi utilisez-vous eval en premier lieu? Je pense que vous utilisez LWP :: UserAgent
et, à moins que vous n'implémentiez votre propre objet request, la méthode 'request` est improbable.
Ainsi, pourquoi ne pas simplement utiliser:
$response = $ua->request($r);
?