my %h = ( 8 => 'value', 3 => 'value', 102 => 'value', 4 => 'value', 1 => 'value', 57 => 'value', ); my @keys = sort { $a <=> $b } keys %h; my $try = shift || 5; # this example allows user to specify on command line my $low = 'not found'; foreach (@keys) { $low = $_ if $_ < $try; last if $_ >= $try; } print "$low\n";