sub variation3ep { my $idx = -1; my %hash = map(($_ => ++$idx), @array); } #### #!/usr/bin/env perl use strict; use warnings; use Benchmark qw(:all); my @array='aa' .. 'zz'; sub variation4 { my $idx = 0; my %hash; $hash{ $_ } = $idx++ for @array; } sub variation5 { my $idx = 0; my %hash; for (@array) { $hash{ $_ } = $idx++; } } cmpthese(-3, { 'variation4' => \&variation4, 'variation5' => \&variation5, }); __END__ Rate variation5 variation4 variation5 740/s -- -4% variation4 773/s 5% -- #### sub variation6 { my $idx = -1; my %hash; $hash{ $_ } = ++$idx for @array; }