Да, grep - это то, что вы ищете:
my @results = grep {match_test($_)} @list;
grep
возвращает подмножество @list
, где match_test
вернул true.grep
называется filter
в большинстве других функциональных языков.
, если вы хотите только первое совпадение, используйте first
из List :: Util .
use List::Util qw/first/;
if (my $result = first {match_test($_)} @list) {
# use $result for something
} else {
die "no match\n";
}