Perlで、文字列evalを使用しようとすると構文エラーが発生するのはなぜですか?

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

  •  22-07-2019
  •  | 
  •  

質問

これが機能しないのはなぜですか?

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

与える:

syntax error at (eval 8) line 1, near "=" 
役に立ちましたか?

解決

二重引用符で囲まれた文字列は補間の対象となるため機能しません。補間は適切に展開されず、適切に展開されます。また、evalの内側ではなく、evalの外側にセミコロンが必要です。次のように単一引用符を試してください:

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

他のヒント

より良い質問は、なぜブロックevalではなく文字列evalを使用しているのですか?

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

さらに良い質問は、最初にevalを使用する理由です。 LWP :: UserAgent を使用していると思われます。独自のリクエストオブジェクトを実装しない限り、 'request`メソッドは死にそうにありません。

したがって、単に使用しないのはなぜですか:

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top