#!/usr/bin/env perl use strict; use warnings; use Data::Dump; sub indexes(&@); my @array = ; chomp @array; dd \@array; my @idxs = indexes { $_ eq "bar" } @array; dd \@idxs; sub indexes(&@) { my $test = shift; grep { local *_ = \$_[$_]; $test->() } 0 .. $#_; } __DATA__ foo bar nose cuke foo bar nose cuke