use Benchmark qw/cmpthese/; my $lim = 1000; our($SUM1, $SUM2); my($sum1, $sum2); cmpthese(-3,{ 'for' => sub{$sum1 = 0; for(my $i = 1; $i <= $lim; $i++){$sum1+=$i}}, 'FOR' => sub{$SUM1 = 0; for(my $i = 1; $i <= $lim; $i++){$SUM1+=$i}}, 'foreach' => sub{$sum2 = 0; for my $i (1 .. $lim){$sum2+=$i}}, 'FOREACH' => sub{$SUM2 = 0; for my $i (1 .. $lim){$SUM2+=$i}}, }); __END__ OUTPUT: with absolute rates removed: with $lim = 10: FOR FOREACH foreach for FOR -- -15% -16% -34% FOREACH 18% -- -0% -22% foreach 18% 0% -- -22% for 51% 28% 27% -- with $lim = 1000: FOR for FOREACH foreach FOR -- -42% -44% -46% for 73% -- -3% -6% FOREACH 78% 3% -- -4% foreach 84% 7% 4% --