1

为什么这不起作用?

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

给出:

syntax error at (eval 8) line 1, near "=" 
4

3 回答 3

22

一个更好的问题是为什么你使用字符串 eval,而不是块 eval?

eval { $response = $ua->request($r); }
print "$@";
于 2009-08-04T14:48:17.590 回答
15

它不起作用,因为您的双引号字符串会受到插值的影响,这不会顺利进行,这些变量会被扩展到位。而且你需要在你的评估之外有一个分号,而不是在它里面。尝试像这样的单引号:

eval '$response = $ua->request($r)';
于 2009-08-04T13:44:04.633 回答
2

一个更好的问题是你为什么首先使用 eval ?我怀疑您正在使用LWP::UserAgent,除非您实现自己的请求对象,否则“请求”方法不太可能死掉。

因此,为什么不简单地使用:

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

?

于 2009-08-04T15:05:41.370 回答