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