可能重複:
How do I use boolean variables in Perl?Perl中是否有內置的true/false布爾值?
[[email protected] ~]$ perl -e 'if(true){print 1}'
1
[[email protected] ~]$ perl -e 'if(false){print 1}'
1
我既驚訝和true
通過false
的if
...
可能重複:
How do I use boolean variables in Perl?Perl中是否有內置的true/false布爾值?
[[email protected] ~]$ perl -e 'if(true){print 1}'
1
[[email protected] ~]$ perl -e 'if(false){print 1}'
1
我既驚訝和true
通過false
的if
...
始終使用警告,尤其上一個-liners。
Perl有沒有真的還是假的命名常量,沒有警告或嚴格啓用「裸詞」(的東西,可能是一個常數或功能,但沒有)被悄悄解釋爲字符串。所以,你在做if("true")
和if("false")
,而且比其他所有字符串""
或"0"
是真實的。
如果嚴格運行:
perl -Mstrict -e 'if(true) { print 1 }'
,你會得到的原因:
Bareword "true" not allowed while "strict subs" in use at -e line 1.
它被解釋爲字符串"true"
或"false"
這是總是如此。常量並不在Perl定義的,但你可以自己做:
use constant { true => 1, false => 0 };
if(false) { print 1 }
您正在使用裸字true
和false
。光禿禿的話是一件壞事。如果你試試這個:
use strict;
use warnings;
if (true){print 1}
你可能會得到這樣的事情:
Bareword "true" not allowed while "strict subs" in use at - line 3.
Execution of - aborted due to compilation errors.
所定義的任何值並不像0被認爲是「真實的」。任何未定義的值或看起來像0(如0
或"0"
)的任何值被認爲是「假」。這些值沒有內置關鍵字。你可以只用0
和1
(或粘在use constant { true => 1, false => 0};
如果你感到困擾。:)
我移植4GL代碼到Perl 5,並有常量幫助。我已經忘記了這些。謝謝。 – octopusgrabbus
看看「人perlsyn」或http://perldoc.perl.org/perlsyn.html –