我在文中发现字符串0
等同于'0'
,因此PERL中的条件为false。
但是当我查看ASCII表时,' 0'是ASCII 48.那么为什么perl会在此控制结构中将字符串0
视为值if ('0'){
print "Statement1 \n";
}
else {
print "statement2\n";
}
?
{{1}}
答案 0 :(得分:10)
因为指定这样做。
数字0,字符串' 0'和'',空列表"()"和" undef" 在布尔上下文中都是false。所有其他值都是真的。 否定真正的价值"!"或者"不是"返回一个特殊的假 值。当评估为字符串时,它被视为'',但作为数字,它被视为0。
这是规范。行为符合。
至于为什么规范如此编写 - Perl在字符串和数字之间进行隐式转换,在这方面不使用ASCII值而是使用十进制值。因此,在此上下文中以与'0'
相同的方式处理0
与允许'9'+1
返回10
而不是':'
(下一个)的行为一致ASCII值)。