我有一个条件:
next if ( ! ($x or $y or $z) );
检查的逻辑是至少有一个必须在数值上非零才能在循环中继续.
我相信他们实际上是数字.
问题是perl将float作为字符串存储在内部.所以检查一下! $x其中$x =’0.00’实际上没有评估为真:我的$x = 0.00; if(!$x){never_gets_here(); }
在不使行过于冗长的情况下强制对变量进行数值求值的最简单方法是什么?
解决方法
我不确定你在哪里知道Perl将浮动存储为字符串.浮点数和字符串是不同的东西:
perl -le 'print 1 if 0.00' perl -le 'print 2 if "0.00"' 2
如果要在未知标量上强制使用数字上下文,则只需向其添加零,例如
unless ( $x + 0 ) { ... }