Ваша проблема связана не с сортировкой, а с необычным способом, который вы определили $stats
, а именно с ссылкой на хеш-ссылку .
my %hash = (a => 1, b => 2);
my $hash_ref = {c => 3, d => 4};
my $ref_to_hash_ref = \{e => 5, f => 6};
Вы можете использовать это:
my $stats = { ... };
foreach my $user (
sort { $stats->{$a}{size} <=> $stats->{$b}{size} }
keys %$stats ) {
...
}
Или вот, если вам действительно нужно выполнить функцию ref-to-hash-ref:
my $stats = \{ ... };
foreach my $user (
sort { $$stats->{$a}{size} <=> $$stats->{$b}{size} }
keys %$$stats ) {
...
}
Обратите внимание, что вы, вероятно, хотите использовать <=>
(числовое сравнение) вместо cmp
(сравнение строк).