use List::MoreUtils qw(each_array); my @x = ( 'apple', 'banana', 'orange' ); my $it = each_array( @{[0..$#x]}, @x ); while ( my ($i, $val) = $it->() ) { print "$i $val\n"; }