#!/usr/bin/perl -w use strict; my $now = 8; my %url = ( monday => { @{[map(($_,1), (1..1000))]} } ); use Benchmark; timethese(1000000, { Grep => q{ $now = (sort grep {$_ <= $now} keys %{$url{'monday'}})[-1]; }, Ternary => q{ $now = ($now < $_ && $_ < 8 ? $_ : $now) for keys %{$url{'monday'}}; }, Max => q{ foreach ( keys %{$url{'monday'}} ) { $now = $_ if $_ > $now }; } });