Python内置函数'all'和'any'的Perl挂件`
是否有像Python函数一样工作的Perl函数Python内置函数'all'和'any'的Perl挂件`,python,perl,perl-data-structures,Python,Perl,Perl Data Structures,是否有像Python函数一样工作的Perl函数all或any?这两个功能是如何工作的 我想确定(无循环)是否所有错误消息都已定义,并且在以下结构中为ne“”: $VAR1 = [{ 'row' => [{ err_msg => "msg1", a => "a1", b => "b1" }, { err_msg => "msg2", a => "a2", b =>
all
或any
?这两个功能是如何工作的
我想确定(无循环)是否所有错误消息都已定义,并且在以下结构中为ne“”:
$VAR1 = [{
'row' => [{
err_msg => "msg1",
a => "a1",
b => "b1"
},
{
err_msg => "msg2",
a => "a2",
b => "b2"
}]
},
{
'row' => [{
err_msg => "msg3",
a => "a3",
b => "b3"
},
{
err_msg => "msg4",
a => "a4",
b => "b4"
}]
}]
不循环执行检查是不可能的,但您确实可以使用
all
来执行此操作
use List::Util qw( all );
my $ok =
all {
all { $_->{err_msg} }
@{ $_->{row} }
}
@$VAR1;
或
第一个版本的效率更高,因为它只在前面所有的组都正常的情况下查看组,而第二个版本无条件地对每个组都有效。不过,这种差异不太重要。
所有{$\u->{err\u msg}
也认为0
是无效值。根据需要进行调整。不幸的是,第一个版本总是返回true
,即使对于不存在的键也是如此。但是第二个版本非常好:)所有{length$\u->{err\u msg}
对于0都是真的,但不是空字符串或unde。但请注意,在Perl 5.12之前,它将在undef上发出警告。@Chris您看到了什么输入?(你所说的“不存在的密钥”是什么意思?)它在我的测试中起作用。@Chris。第一个版本很好用。例如,如果我注释掉数据结构中的第一行err\u msg
,它将返回false。
use List::Util qw( all );
my $ok =
all { $_->{err_msg} }
map { @{ $_->{row} } }
@$VAR1;