En Perl, pourquoi une erreur de syntaxe se produit-elle lorsque j'essaie d'utiliser string eval?

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

  •  22-07-2019
  •  | 
  •  

Question

Pourquoi ça ne marche pas?

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

donne:

syntax error at (eval 8) line 1, near "=" 
Était-ce utile?

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

?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top