在hash-val之后是否有一种“Perl-ish”方法对哈希数组进行排序?
my @l = ({k1 => "1", k2 => "one"}, {k1 => "2", k2 => "two"},
{k1 => "3", k2 => "three"});
foreach (@l)
{
print "\n" . $_->{k1} . ", " . $_->{k2};
}
我得到的订单是我插入的订单(还有什么......)。但我想在哈希值之后对其进行排序。 我可以想象算法的方式。但我问的是可能已存在的功能还是其他什么。
谢谢!
答案 0 :(得分:5)
要按k1
键后面的值排序,您可以执行以下操作。
my @sorted = sort { $a->{k1} <=> $b->{k1} } @l;
变量$a
和$b
是sort
的特殊变量。如果您的列表项是引用,则可以直接使用它们。
使用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;