如何在Perl中使用布尔变量?我试过了:$var = false;$var = FALSE;$var = False;这些都不起作用。我收到错误消息当使用“strict subs”时,不允许使用Bareword“false”。
3 回答
浮云间
TA贡献1829条经验 获得超4个赞
在Perl中,以下在条件语句中评估为false:
0
'0'
undef
'' # Empty scalar
() # Empty list
('')
其余的都是如此。没有裸言语true或false。
摇曳的蔷薇
TA贡献1793条经验 获得超6个赞
Perl没有本机布尔类型,但您可以使用整数或字符串的比较来获得相同的行为。Alan的例子是使用整数比较的一种很好的方法。这是一个例子
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”中标记的行定义一个名为true的常量,总是求值为1,一个名为false的常量始终求值为0.由于在Perl中定义常量的方式,以下代码行也会失败:
true = 0;true = false;
错误消息应该说“无法修改标量赋值中的常量”。
我在其中一条关于比较字符串的评论中看到了这一点。您应该知道,因为Perl在标量变量中组合了字符串和数字类型,所以您可以使用不同的语法来比较字符串和数字:
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";}
这些运算符之间的差异是Perl中非常常见的混淆源。
添加回答
举报
0/150
提交
取消