my %url; my $now = 8; my @size=(100,1000,10000); foreach(@size){ my $size=$_; print "size=$size\n"; %url = ( monday => { @{[map(($_,1), (1..$size))]} } ); timethese(0, { Grep => sub {(sort grep {$_ <= $now} keys %{$url{"monday"}})[-1];}, Ternary => sub {($now < $_ && $_ < 8 ? $_ : $now) for keys %{$url{"monday"}};}, Max => sub {foreach ( keys %{$url{"monday"}} ) { $now = $_ if $_ > $now };} }); undef %url; }