sub partition (&@) { my ($condition, @array) = @_; my (@true, @false); foreach (@array) { if ( $condition->($_) ) { push @true, $_; } else { push @false, $_; } } return \@true, \@false; } my ($ok, $no) = partition { $_[0]->name =~ m/[0-9]{2}$/ } @{ $rec->vals };