use List::Util qw/first/; my @arr = ('A', 'B'); my $filter = sub { $_ eq 'B' }; my $index = first { local $_ = $arr[$_]; $filter->() } keys @arr; print "done $index\n";