如何通过降序/升序值和升序/降序键对perl中的哈希引用进行排序?

时间:2017-10-18 07:06:39

标签: perl sorting

我对哈希的哈希引用看起来像这样

my %hey = (
    144 => 'Abc_test1',
    25  => 'sample2',
    114 => 'User',
    145 => 'abc_test2',
);

我希望输出订单为

Abc_test1  
User
abc_test2
sample2

我应该能够存储在某个变量中

任何帮助?

2 个答案:

答案 0 :(得分:3)

排序是使用表达式来计算出对事物进行排序的顺序,因此它不仅限于比较一件事。在你的情况下你想要这样的东西......

my @sorted_values = map $hey{$_}, sort {$hey{$b} cmp $hey{$a} or $a <=> $b} keys %hey;

它首先比较哈希的值并按降序对它们进行排序。在两个值相同的情况下,它然后按升序比较键值和排序。

答案 1 :(得分:0)

values=[sort {$a<=>$b and $hey->{$a} cmp $hey->{$b}} keys  %$hey],