my @min_keys = sort { length($a) <=> length($b) || $a cmp $b } keys %$hashref; my $min = length $min_keys[0]; for ( 1 .. $#min_keys ) { if ( length $min_keys[$_] != $min ) { splice @min_keys, $_; last; } } # maxstr & random print join "\t", $min_keys[-1], $min_keys[ rand @min_keys ];