和其它的语言不同, Perl并没有专门的Boolern数据类型,它是靠一些简单的规则来判断的:
- 如果值为数字, 0为假;所有其它数字都为真。(非0值为真)
- 如果值为字符串,空字符串('')为假;所有其它字符串都为真。
- 如果不是数字也不是字符串,就先转换成数字或字符串再行判断(也就是说,undef表示假,而且所有的引用都是真)。
以上规则中隐藏了另一条规则。字符串'0'跟数字0是同一个标量值,所以Perl会将他们一视同仁, 也就是说,字符串'0'是唯一被当成假的非空字符串。
和其它的语言不同, Perl并没有专门的Boolern数据类型,它是靠一些简单的规则来判断的:
以上规则中隐藏了另一条规则。字符串'0'跟数字0是同一个标量值,所以Perl会将他们一视同仁, 也就是说,字符串'0'是唯一被当成假的非空字符串。