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 に答える