我在mac上做这个,perl版本是
This is perl 5, version 16, subversion 3 (v5.16.3) built for darwin-thread-multi-2level
$ perl -e "$t=false;while(!($t)){print 1}"
$ perl -e "$t=true;while(!($t)){print 1}"
$ perl -e "$t=true;while(not($t)){print 1}"
$ perl -e "$t=false;while(not($t)){print 1}"
$
为什么会这样?我错过了什么?
答案 0 :(得分:4)
来自perlsyn:
禁用真相与虚假
数字0,字符串'0'和“”,空列表
()
和undef
在布尔上下文中都是假的。所有其他值都是真的。!
或not
对真值的否定会返回一个特殊的假值。
$t=false
时, $t
将false
设置为字符串strict 'subs'
。当在布尔上下文中使用时,字符串false
是真实的。
因此:
$t=false # truthy
!$t # falsy
$t=true # truthy
!$t # falsy
Perl没有关于true和false的特殊关键字;通常使用1表示true,0表示false表示。