我需要在eval中隐藏警告,但其余代码应该继续发出警告消息.这是我的 –
eval "\$value = $hash->{key}";
$hash->{key} = "function(0.01*$another_var)";
$another_var是undef(或“”)时出现问题.该脚本只是通过以下消息进行解析 –
Argument “” isn’t numeric in
multiplication (*) at (eval 1381) line
1.
有什么建议我可以避免这个吗?
我想的一个选择是解析括号内的值并首先评估它,但它与我正在处理的数据相当复杂.
解决方法
将代码包装在无警告块中.
... { no warnings; eval "\$value = $hash->{key}"; } ...
您还可以禁用特定类别的警告.有关警告类别的层次结构,请参阅perllexwarn
;有关任何特定警告所属的类别,请参阅perldiag
.
{ no warnings qw(uninitialized numeric); eval "\$value = $hash->{key}"; }
(blah blah blah标准免责声明,任何一个禁用警告的人都不适合在加入机器的25英尺范围内等等)