为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

达令说 2019-08-12 16:34:41
如何在Perl中使用布尔变量?我试过了:$var = false;$var = FALSE;$var = False;这些都不起作用。我收到错误消息当使用“strict subs”时,不允许使用Bareword“false”。
查看完整描述

3 回答

?
浮云间

TA贡献1829条经验 获得超3个赞

在Perl中,以下在条件语句中评估为false:


0

'0'

undef

''  # Empty scalar

()  # Empty list

('')

其余的都是如此。没有裸言语true或false。


查看完整回答
反对 回复 2019-08-12
?
摇曳的蔷薇

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中非常常见的混淆源。


查看完整回答
反对 回复 2019-08-12
  • 3 回答
  • 0 关注
  • 919 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信