基本的Perl哈希排序(按键、按值,但也按键和值)

基本的Perl哈希排序(按键、按值,但也按键和值),perl,sorting,hash,Perl,Sorting,Hash,好的,我正在编写一个Perl程序,它有一个散列值,我收集了这些值(在一个单独的程序中),并将它们输入到这个Perl脚本中。此哈希是(string,string)的哈希 我想用3种方式对值进行排序:首先,我想按键排序。我认为这很容易,你可以按照你的想法来做,使用Perl内置的排序函数,循环键,在排序时打印/存储/处理每一个键 foreach my $name (sort keys %planets) { printf "%-8s %s\n", $name, $planets{$name};

好的,我正在编写一个Perl程序,它有一个散列值,我收集了这些值(在一个单独的程序中),并将它们输入到这个Perl脚本中。此哈希是(string,string)的哈希

我想用3种方式对值进行排序:首先,我想按键排序。我认为这很容易,你可以按照你的想法来做,使用Perl内置的排序函数,循环键,在排序时打印/存储/处理每一个键

foreach my $name (sort keys %planets) {
    printf "%-8s %s\n", $name, $planets{$name};
}
第二,我想按值排序。同样,这很简单,使用sort函数并循环:

foreach my $name (sort { $planets{$a} <=> $planets{$b} } keys %planets) {
    printf "%-8s %s\n", $name, $planets{$name};
}

在平局中,比较运算符将返回0,因此您可以使用
| |
链接多个比较:

 sort { $planets{$a} <=> $planets{$b} || $a cmp $b }
sort{$planets{$a}$planets{$b}| |$a cmp$b}

嘿,现在看看这个。您的答案正在阅读和考虑中!
 sort { $planets{$a} <=> $planets{$b} || $a cmp $b }