use strict; use warnings; use Benchmark; sub fortest { my $number = 0; for(1 .. 100) { $number++ if $_ < 50; } } sub greptest { my $number = 0; for(grep {$_ < 50} (1 .. 100)) { $number++; } } my $count = 100000; timethese( $count, { 'for' => \&fortest, 'grep' => \&greptest } ); __OUTPUT__ Benchmark: timing 100000 iterations of for, grep... for: 5 wallclock secs ( 4.85 usr + 0.02 sys = 4.87 CPU) @ 20546.54/s (n=100000) grep: 6 wallclock secs ( 5.16 usr + 0.00 sys = 5.16 CPU) @ 19387.36/s (n=100000)