Python内置函数`all`和`any`的Perl pendant

Chr*_*ris 3 python perl perl-data-structures

是否有工作像Python函数Perl函数allanyJobin的答案是对这两种功能如何运作的简短解释.

我想确定(没有循环)是否所有error-msg都defined and 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"
    }]
}]
Run Code Online (Sandbox Code Playgroud)

ike*_*ami 8

没有循环就不可能执行检查,但你确实all可以这样做.

use List::Util qw( all );

my $ok =
   all {
      all { $_->{err_msg} }
         @{ $_->{row} }
   }
      @$VAR1;
Run Code Online (Sandbox Code Playgroud)

要么

use List::Util qw( all );

my $ok =
   all { $_->{err_msg} }
      map { @{ $_->{row} } }
         @$VAR1;
Run Code Online (Sandbox Code Playgroud)

第一个版本效率更高,因为它只查看一个组,如果所有以前的组都检查正常,而第二个版本无条件地适用于每个组.不过,这种差异不太重要.