如何在Perl中使用布尔变量?

如何在Perl中使用布尔变量?

我试过了:

$var = false;$var = FALSE;$var = False;

这些都不起作用。我收到错误消息

当使用“strict subs”时,不允许使用Bareword“false”。


达令说
浏览 945回答 3
3回答

浮云间

在Perl中,以下在条件语句中评估为false:0'0'undef''  # Empty scalar()  # Empty list('')其余的都是如此。没有裸言语true或false。

摇曳的蔷薇

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中非常常见的混淆源。
打开App,查看更多内容
随时随地看视频慕课网APP