【发布时间】:2011-06-15 11:33:09
【问题描述】:
我需要在 eval 中隐藏警告,但其余代码应继续抛出警告消息。这是我所拥有的-
eval "\$value = $hash->{key}";
现在 $hash->{key} 的值可以是函数调用,例如:
$hash->{key} = "function(0.01*$another_var)";
当$another_var 是undef(或"")时,问题就来了。该脚本只是使用以下消息 -
参数“”不是数字 (eval 1381) 行的乘法 (*) 1.
有什么建议可以避免这种情况吗? 我正在考虑的一个选择是解析括号内的值并首先对其进行评估,但它与我正在处理的数据相当复杂。
【问题讨论】:
-
我认为如果你在做一个字符串评估,你真的需要重新考虑你的方法。 Perl 支持一流的函数,因此您几乎可以肯定地实现您想要的,而无需 eval 或抑制警告。如果您能更清楚地了解潜在问题,您会得到更好的答案。
-
谢谢。我听到你在字符串 eval 部分。所以我有一个数据文件,假设它有 2 列 A 和 B。现在基于配置文件,我可以得出第三列 C,即 0.01 * B(或 $B)。但我不能说 B 列中是否总是有东西,我也不知道用户想要 $B 还是 $A,直到我点击 eval。