Ваш код просто принимает первое максимальное значение, которое он находит в отсортированных данных.Вам нужно продолжать чтение элементов массива, пока не достигнете элемента, который больше не является максимальным.
Однако, поскольку вам, вероятно, придется проверять все значения хеш-функции, нет большой пользы для сортировки.Вы можете просто пройти его и отследить максимальное найденное значение (я).
my @a = (undef,11,12,13,14,15,13,13,14,14);
my %count;
$count{$_}++ for @a;
my ($max_count, @max_values);
while ( my ($k,$v) = each %count) {
if ($v > $max_count) {
@max_values = ($k);
$max_count = $v;
}
elsif ($v == $max_count) {
push @max_values, $k;
}
}
my $max_values = join " ", sort @max_values;
print "Max value = $max_values, occur $max_count times\n";
Обратите внимание, что undef
не является действительным хеш-ключом - он преобразуется в ""
.