use strict; use warnings; my $c = "foo"; my $d = "print q{$c}, q{\n}"; eval ($d); # print "foo" my @f = 1..10; process_f(); sub process_f { my $g = 'print "$_ " for @f; print "\n";'; eval ($g); } my $h = 'my $i = sub { print map {$_ *= 2; "$_ ";} @f; print "\n" }; $i->();'; eval ($h); #### use strict; use warnings; use Benchmark; our @array2 = 1 .. 1000; timethese 50000, { "idiomatic" => q[ $_ +=2 for @array2; ], "map" => q[ map $_ +=2, @array2; ], }; #### Benchmark: timing 50000 iterations of idiomatic, map... idiomatic: 3 wallclock secs ( 2.87 usr + 0.00 sys = 2.87 CPU) @ 17421.60/s ( n=50000) map: 3 wallclock secs ( 3.04 usr + 0.00 sys = 3.04 CPU) @ 16436.55/s ( n=50000) Benchmark: timing 50000 iterations of idiomatic, map... idiomatic: 3 wallclock secs ( 2.87 usr + 0.00 sys = 2.87 CPU) @ 17421.60/s ( n=50000) map: 3 wallclock secs ( 3.04 usr + 0.00 sys = 3.04 CPU) @ 16436.55/s ( n=50000) Benchmark: timing 50000 iterations of idiomatic, map... idiomatic: 3 wallclock secs ( 2.86 usr + 0.00 sys = 2.86 CPU) @ 17513.13/s ( n=50000) map: 3 wallclock secs ( 3.04 usr + 0.00 sys = 3.04 CPU) @ 16436.55/s ( n=50000) Benchmark: timing 50000 iterations of idiomatic, map... idiomatic: 3 wallclock secs ( 2.87 usr + 0.00 sys = 2.87 CPU) @ 17415.53/s ( n=50000) map: 3 wallclock secs ( 3.04 usr + 0.00 sys = 3.04 CPU) @ 16436.55/s ( n=50000) Benchmark: timing 50000 iterations of idiomatic, map... idiomatic: 3 wallclock secs ( 2.87 usr + 0.00 sys = 2.87 CPU) @ 17421.60/s ( n=50000) map: 3 wallclock secs ( 3.04 usr + 0.00 sys = 3.04 CPU) @ 16436.55/s ( n=50000)