use Data::Dump::Streamer; { sub make_counter { my $i=shift; return sub { my $r=$i; $i++; $r } }; } my @counters=map { make_counter($_) } 1..5; Dump(\@counters); __END__ my ($i,$i_eclipse_1,$i_eclipse_2,$i_eclipse_3,$i_eclipse_4); $i = 1; $i_eclipse_1 = 2; $i_eclipse_2 = 3; $i_eclipse_3 = 4; $i_eclipse_4 = 5; $ARRAY1 = [ sub { my $r = $i; ++$i; $r; }, sub { my $r = $i_eclipse_1; ++$i_eclipse_1; $r; }, sub { my $r = $i_eclipse_2; ++$i_eclipse_2; $r; }, sub { my $r = $i_eclipse_3; ++$i_eclipse_3; $r; }, sub { my $r = $i_eclipse_4; ++$i_eclipse_4; $r; } ];