P:\test>type 381208-2.pl #! perl -slw #use strict; use Benchmark qw[ cmpthese ]; use List::Util qw[ first ]; our @array = 1 .. 100_000; cmpthese( -1, { func_10th => sub { first { length > 3 } @array; }, iter_10th => sub { for ( @array ) { return $_ if length > 3; } }, }); cmpthese( -1, { func_last => sub { $_ = first { length > 5 } @array; }, iter_last => sub { for ( @array ) { return $_ if length > 5; } }, }); P:\test>381208-2 Rate func_10th iter_10th func_10th 1196/s -- -61% iter_10th 3076/s 157% -- Rate func_last iter_last func_last 22.6/s -- -23% iter_last 29.3/s 30% --