最好通过一个例子来说明:
my $var1=1;
my $var2;
my $var3=3;
# say "at least one undef" if at least one of $var1, $var2, $var3 is undef
显然,我可以明确地循环并执行此操作,但我总是喜欢找到能够实现同样结果的一行代码。
最好通过一个例子来说明:
my $var1=1;
my $var2;
my $var3=3;
# say "at least one undef" if at least one of $var1, $var2, $var3 is undef
if (grep { !defined } $var1, $var2, $var3) {
say 'at least one undef'
}
一句话描述
say 'at least one undef' if grep { !defined } $var1, $var2, $var3;
//
是一种短路运算符,因此如果您需要根据单个值的定义情况有条件地执行代码路径,它将非常有用。虽然我在这里想不出用途,但是无论如何都有很多方法可以做到。 - Bob在 Bob 的回答基础上,有些情况下,您可能想要获取实际计数
say 'has ', scalar ( grep { not defined } $var1,$var2,$var3 ),' undef';