我需要在 eval 中隐藏警告,但其余代码应继续抛出警告消息。这是我所拥有的 -

eval "\$value = $hash->{key}";

现在 $hash->{key} 的值可以是一个函数调用,例如:
$hash->{key} = "function(0.01*$another_var)";

$another_varundef (或 "" )时,问题就来了。脚本只是用下面的消息胡说八道 -



有什么建议我可以避免这种情况吗?
我正在考虑的一个选择是解析括号内的值并首先对其进行评估,但它与我正在处理的数据相当复杂。

最佳答案

将您的代码包装在 no warnings 块中。

...
{
    no warnings;
    eval "\$value = $hash->{key}";
}
...

您还可以禁用特定类别的警告。有关警告类别的层次结构,请参阅 perllexwarn ,有关任何特定警告所属的类别,请参阅 perldiag
{
    no warnings qw(uninitialized numeric);
    eval "\$value = $hash->{key}";
}

(等等等等标准免责声明,任何禁用警告的人都不适合进入加法机 25 英尺之内等等)

关于perl - Perl Eval 中的警告,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4798663/

10-11 22:48
查看更多