为什么!1在Perl中给我什么?

前端之家收集整理的这篇文章主要介绍了为什么!1在Perl中给我什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这很奇怪.
下列:
$sum = !0;
print $sum;

打印出1,你会期望.但是这个

$sum = !1;
print $sum;

没打印出来为什么?

解决方法

要小心:你写的是没有做你认为的事情.记住,perl没有真正的布尔数据类型.它有标量,散列,列表和引用.那么它处理真/假值的方式是上下文的.除了未定义的变量,空列表,空字符串和数字0之外,所有内容都以perl计算为“true”.

那么你的代码正在做的是将一个值的倒数换成“false”,这可以是上面列出的值.按照惯例,为了简单起见,perl返回1(尽管你不应该依赖它;它可以非常好地返回一个包含一系列随机数的列表,因为它也将评估为“true”).

当您要求评估为“true”的值的倒数时,会发生类似的事情.实际上打印出来的不是“没有”,它是空字符串(”),正如我所提到的,它在布尔表达式中评估为“false”.你可以查看这个:

print "This evaluates to false\n" if( (!1) eq '');

如果您要求为什么perl扔出空字符串而不是其他“false”值之一,那么这可能是因为perl是用来处理字符串的,这是一个完全合理的字符串来回传.

猜你在找的Perl相关文章