В процессе выполнения тестовых заданий для новой работы столкнулся с задачей вывода сортированных данных.
Итак, имеем структуру:
$VAR1 = bless( {
'DOMAINS' => {
'yandex.ru' => 1,
'INVALID' => 5,
'rambler.ru' => 1,
'vk.com' => 1,
'mail.ru' => 2
},
}, 'MyModule' );
необходимо выводить данные хеш-массива DOMAINS, отсортированные по значениям(values) данного массива.
Недолго думая обратился за ответом к замечательной книге Perl: изучаем глубже, в которой было найдено решение:
foreach my $domain (sort { $self->{DOMAINS}->{$b} cmp $self->{DOMAINS}->{$a} }
keys $self->{DOMAINS}) {
print $domain . "\t" . $self->{DOMAINS}->{$domain} . "\n";
}
В результате получаем то, что требовалось:
INVALID 5
mail.ru 2
yandex.ru 1
rambler.ru 1
vk.com 1