有两个声明的变量,如果两者都存在(为真),我想同时评估。
my @array = (1,2);
my $scalar = 0;
if (@array && $scalar){
print "success\n";
}
&&
不起作用。是否有其他运算符或者我必须创建 2 个 if 状态?
我希望它打印出来success
。
有两个声明的变量,如果两者都存在(为真),我想同时评估。
my @array = (1,2);
my $scalar = 0;
if (@array && $scalar){
print "success\n";
}
&&
不起作用。是否有其他运算符或者我必须创建 2 个 if 状态?
我希望它打印出来success
。
不起作用的代码不是您发布的代码。
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
改为测试。
如果您认为数组具有多个元素时为真,那么您的 if 语句看起来很好并且应该按预期工作。
这个程序:
my @array = (1,2);
my $scalar = 1;
if (@array && $scalar) {
print "TRUE!\n";
}
打印TRUE
。
为什么你认为&&
不起作用?
试试这个
my @array = (1,2);
my $scalar = 0;
if (scalar @array && defined $scalar){
print "success\n";
}