0

我有一个名称和等级(键)的哈希值和一个数字(值),格式如下:

"\nName\nSecondName\nRank: 12345/150000" => 100

"\nThirdName\nFourthName\nRank: 24567/150000" => 71

"\nFifthName\nSixthName\nRank: 10101/150000" => 71

等等 150,000 次...

使用 Perl,我想主要按值编号对哈希进行排序,然后再按排名的第一个数字,如下所示:

"\nName\nSecondName\nRank: 12345/150000" => 100

"\nFifthName\nSixthName\nRank: 10101/150000" => 71

"\nThirdName\nFourthName\nRank: 24567/150000" => 71
4

1 回答 1

2
my @ordered_keys =
    sort {
       $hash{$b} <=> $hash{$a}
    ||
       ($a =~ m{: ([0-9]+)/})[0] <=> ($b =~ m{(: [0-9]+)/})[0]
    }
    keys %hash;

for my $key (@ordered_keys) {
   my $val = $hash{$key};
   ...
}
于 2012-09-19T22:23:33.867 回答