my %distances = ( 452 => 'London', 678 => 'Paris', 890 => 'Rome', ); print nearest( 672, \%distances ) . "\n"; sub nearest{ my ( $dist, $href ) = @_; my ( $answer ) = ( sort { abs( $a - $dist ) <=> abs( $b - $dist ) } keys %$href ); return $href -> { $answer }; }