Perl:在哈希值之后排序数组

时间:2016-09-01 14:38:12

标签: perl hash

在hash-val之后是否有一种“Perl-ish”方法对哈希数组进行排序?

my @l = ({k1 => "1", k2 => "one"}, {k1 => "2", k2 => "two"}, 
     {k1 => "3", k2 => "three"});

foreach (@l)
{
  print "\n" . $_->{k1} . ", " . $_->{k2};
}

我得到的订单是我插入的订单(还有什么......)。但我想在哈希值之后对其进行排序。 我可以想象算法的方式。但我问的是可能已存在的功能还是其他什么。

谢谢!

2 个答案:

答案 0 :(得分:5)

要按k1键后面的值排序,您可以执行以下操作。

my @sorted = sort { $a->{k1} <=> $b->{k1} } @l;

变量$a$bsort的特殊变量。如果您的列表项是引用,则可以直接使用它们。

使用Data::Printer输出:

[
    [0] {
        k1   1,
        k2   "one"
    },
    [1] {
        k1   2,
        k2   "two"
    },
    [2] {
        k1   3,
        k2   "three"
    }
]

答案 1 :(得分:2)

@list = sort { $a->{'k1'} <=> $b->{'k1'} } @l;