use List::Util qw( first ); my @re_count = map { { re => $_, count => 0 } } ( qr/this/, qr/that/, ..., qr// ); foreach my $row ( ... ) { my $re_ref = first { $row =~ $_->{re} } @re_count; $re_ref->{count}++ if $re_ref; }