Невозможно выполнить проверку без зацикливания, но вы действительно можете использовать all
для этого.
use List::Util qw( all );
my $ok =
all {
all { $_->{err_msg} }
@{ $_->{row} }
}
@$VAR1;
или
use List::Util qw( all );
my $ok =
all { $_->{err_msg} }
map { @{ $_->{row} } }
@$VAR1;
Первая версия более эффективна, посколькуон смотрит на группу только в том случае, если все предыдущие группы проверены нормально, тогда как вторая версия безусловно работает для каждой группы.Однако вряд ли эта разница имеет значение.