【发布时间】:2014-06-29 05:45:56
【问题描述】:
我正在尝试使用此代码,但它尝试对键进行排序,因为它们不是数字,所以它不能这样做。
foreach my $word (sort {$b <=> $a} keys %wordHash) {
printf ("%-20s %10d\n", $word, $wordHash{$word});
}
【问题讨论】:
-
如果您需要值,请使用
values而不是keys。如果要按字母顺序排列,请使用cmp而不是<=>。 -
@ooga - 有点不清楚 OP 想要什么......我回答了我能想到的所有 3 个选项
-
术语的关键点:您不能对哈希进行排序。哈希没有顺序。您可以做的是以给定顺序打印散列中的内容,但散列本身未排序。这与 PHP 数组不同,PHP 数组具有像 Perl 哈希一样的键查找,但也像 Perl 数组一样按特定顺序。
-
@AndyLester - 好吧,如果你很狡猾,你可以对哈希进行排序(例如通过捆绑哈希),但这有点令人厌恶,只能作为最后的手段。
-
我认为这与我们在这里讨论的内容无关。 OP 不想要“排序的哈希”,他希望哈希输出的内容按排序顺序。