为什么perl会处理字符串" 0"是假的?

时间:2016-12-23 04:41:28

标签: perl

我在文中发现字符串0等同于'0',因此PERL中的条件为false。

但是当我查看ASCII表时,' 0'是ASCII 48.那么为什么perl会在此控制结构中将字符串0视为值if ('0'){ print "Statement1 \n"; } else { print "statement2\n"; }

{{1}}

1 个答案:

答案 0 :(得分:10)

因为指定这样做。

  

数字0,字符串' 0'和'',空列表"()"和" undef"   在布尔上下文中都是false。所有其他值都是真的。   否定真正的价值"!"或者"不是"返回一个特殊的假   值。当评估为字符串时,它被视为'',但作为数字,它被视为0。

这是规范。行为符合。

至于为什么规范如此编写 - Perl在字符串和数字之间进行隐式转换,在这方面不使用ASCII值而是使用十进制值。因此,在此上下文中以与'0'相同的方式处理0与允许'9'+1返回10而不是':'(下一个)的行为一致ASCII值)。