有人可以解释什么确切的字符串“0但真实”在Perl意味着什么?据我所知,在整数比较中它等于零,但当作为布尔使用时,计算结果为true。它是否正确?这是语言的正常行为还是这是一个特殊字符串作为解释器中的特殊情况?
解决方法
这是语言的正常行为。引用perlsyn手册页:
The number 0,the strings ’0’ and ’’,the empty list “()”,and “undef”
are all false in a boolean context. All other values are true. Negation
of a true value by “!” or “not” returns a special false value.
When evaluated as a string it is treated as ’’,but as a number,it is
treated as 0.
因此,需要一种方法来从系统调用返回0,期望返回0作为(成功)返回值,并且通过实际返回false值来发出故障情况的信号。 “0但真”服务于这一目的。