3 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個(gè)贊
在Perl中,以下在條件語(yǔ)句中評(píng)估為false:
0
'0'
undef
'' # Empty scalar
() # Empty list
('')
其余的都是如此。沒(méi)有裸言語(yǔ)true或false。

TA貢獻(xiàn)1793條經(jīng)驗(yàn) 獲得超6個(gè)贊
Perl沒(méi)有本機(jī)布爾類型,但您可以使用整數(shù)或字符串的比較來(lái)獲得相同的行為。Alan的例子是使用整數(shù)比較的一種很好的方法。這是一個(gè)例子
my $boolean = 0;if ( $boolean ) { print "$boolean evaluates to true\n";} else { print "$boolean evaluates to false\n";}
我在一些程序中完成的一件事是使用常量添加相同的行為:
#!/usr/bin/perluse strict;use warnings;use constant false => 0;use constant true => 1;my $val1 = true;my $val2 = false;print $val1, " && ", $val2;if ( $val1 && $val2 ) { print " evaluates to true.\n";} else { print " evaluates to false.\n";}print $val1, " || ", $val2;if ( $val1 || $val2 ) { print " evaluates to true.\n";} else { print " evaluates to false.\n";}
“use constant”中標(biāo)記的行定義一個(gè)名為true的常量,總是求值為1,一個(gè)名為false的常量始終求值為0.由于在Perl中定義常量的方式,以下代碼行也會(huì)失?。?/p>
true = 0;true = false;
錯(cuò)誤消息應(yīng)該說(shuō)“無(wú)法修改標(biāo)量賦值中的常量”。
我在其中一條關(guān)于比較字符串的評(píng)論中看到了這一點(diǎn)。您應(yīng)該知道,因?yàn)镻erl在標(biāo)量變量中組合了字符串和數(shù)字類型,所以您可以使用不同的語(yǔ)法來(lái)比較字符串和數(shù)字:
my $var1 = "5.0";my $var2 = "5";print "using operator eq\n";if ( $var1 eq $var2 ) { print "$var1 and $var2 are equal!\n";} else { print "$var1 and $var2 are not equal!\n";}print "using operator ==\n";if ( $var1 == $var2 ) { print "$var1 and $var2 are equal!\n";} else { print "$var1 and $var2 are not equal!\n";}
這些運(yùn)算符之間的差異是Perl中非常常見(jiàn)的混淆源。
添加回答
舉報(bào)