0

有两个声明的变量,如果两者都存在(为真),我想同时评估。

my @array = (1,2);
my $scalar = 0;

if (@array && $scalar){
  print "success\n";
}

&&不起作用。是否有其他运算符或者我必须创建 2 个 if 状态?
我希望它打印出来success

4

3 回答 3

3

不起作用的代码不是您发布的代码。

perl -E 'my @array = (1,2); my $scalar = 1; if (@array && $scalar) { say "True!" } else { say "False" }'
True!

perl -E 'my @array = (); my $scalar = 1; if (@array && $scalar) { say "True!" } else { say "False" }'
False

编辑:响应 kmxillo 评论的更多示例:

perl -E 'my @array = (1,2); my $scalar = 0; if (@array && $scalar) { say "True!" } else { say "False" }'
False

perl -E 'my @array = (1,2); my $scalar = 0; if (@array && defined $scalar) { say "True!" } else { say "False" }'
True!

数字 0 被认为是假值(与undef、空字符串、空数组和字符串“0”一起),因此设置$scalar为 0 为@array && $scalar假。$scalar为了在为 0时保持真实,请defined $scalar改为测试。

于 2013-05-16T13:57:07.847 回答
1

如果您认为数组具有多个元素时为真,那么您的 if 语句看起来很好并且应该按预期工作。

这个程序:

my @array = (1,2);
my $scalar = 1;

if (@array && $scalar) {
    print "TRUE!\n";
}

打印TRUE

为什么你认为&&不起作用?

于 2013-05-16T13:43:43.433 回答
-1

试试这个

  my @array = (1,2);
  my $scalar = 0;

  if (scalar @array && defined $scalar){
     print "success\n";
  }
于 2013-05-17T13:20:44.690 回答