use strict; use Benchmark; my $a_huge_value = 10000000; sub outside { my($foo); for (my $i = 0; $i < $a_huge_value; $i++) { $foo = $i + 1; $foo++; } } sub inside { for (my $i = 0; $i < $a_huge_value; $i++) { my $foo = $i + 1; $foo++; } } timethese 1, { inside => \&inside, outside => \&outside, }; __END__ Benchmark: timing 1 iterations of inside, outside... inside: 6 wallclock secs ( 5.99 usr + 0.00 sys = 5.99 CPU) @ 0.17/s (n=1) outside: 5 wallclock secs ( 4.95 usr + 0.01 sys = 4.96 CPU) @ 0.20/s (n=1)