有两个声明的变量,如果两者都存在,我想同时评估它们(是真的)。
my @array = (1,2);
my $scalar = 0;
if (@array && $scalar){
print "success\n";
}
&&
不起作用。是否有其他操作员或我是否必须创建2个if-state?
我希望它能打印success
。
答案 0 :(得分: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会使{{ 1}}假。要在@array && $scalar
为0时保持正确,请改为测试$scalar
。
答案 1 :(得分:1)
如果你认为数组的元素数多于0时为true,那么你的if语句看起来很好,应该按预期工作。
这个程序:
my @array = (1,2);
my $scalar = 1;
if (@array && $scalar) {
print "TRUE!\n";
}
打印TRUE
。
为什么你认为&&
不起作用?
答案 2 :(得分:-1)
试试这个
my @array = (1,2);
my $scalar = 0;
if (scalar @array && defined $scalar){
print "success\n";
}