宣言された変数が 2 つあります。両方が存在する (TRUE である) 場合は同時に評価したいと思います。
my @array = (1,2);
my $scalar = 0;
if (@array && $scalar){
print "success\n";
}
&&
動作しません。別の演算子がありますか、それとも 2 つの if-state を作成する必要がありますか?
印刷されると思っていましたsuccess
。
宣言された変数が 2 つあります。両方が存在する (TRUE である) 場合は同時に評価したいと思います。
my @array = (1,2);
my $scalar = 0;
if (@array && $scalar){
print "success\n";
}
&&
動作しません。別の演算子がありますか、それとも 2 つの if-state を作成する必要がありますか?
印刷されると思っていました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!
undef
数値 0 は ( 、空の文字列、空の配列、および文字列 "0"とともに) 偽の値と見なされるため、$scalar
0 に設定すると@array && $scalar
偽になります。が 0のときに true を維持するには、代わり$scalar
にテストdefined $scalar
します。
これを試して
my @array = (1,2);
my $scalar = 0;
if (scalar @array && defined $scalar){
print "success\n";
}