In Perl, warum bekomme ich einen Syntaxfehler, wenn ich versuche Zeichenfolge eval zu benutzen?

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

  •  22-07-2019
  •  | 
  •  

Frage

Warum ist das nicht funktioniert?

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

gibt:

syntax error at (eval 8) line 1, near "=" 
War es hilfreich?

Lösung

Es funktioniert nicht, weil Ihre Strings in doppelten Anführungszeichen unterliegen Interpolation ist, die gehen zu gehen ist nicht gut, mit diesen Variablen anstelle erweitert. Und Sie brauchen ein Semikolon außerhalb Ihres eval, nicht so sehr in seinem Inneren. Versuchen Sie einfache Anführungszeichen wie folgt:

eval '$response = $ua->request($r)';

Andere Tipps

Eine bessere Frage ist, warum Sie eine Zeichenfolge eval verwenden, anstelle eines Blocks eval?

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

Eine noch bessere bessere Frage ist, warum Sie eval in erster Linie verwenden? Ich vermute, dass Sie LWP::UserAgent verwenden und wenn Sie Ihre eigenen Wunsch Objekt implementieren, die ‚request` Methode ist unwahrscheinlich sterben.

So, warum nicht einfach verwenden:

$response = $ua->request($r);

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top