2016-09-01 24 views
1

ハッシュ値の後にハッシュ配列をソートする "Perl-ish"方法はありますか?Perl:ハッシュ値の後の配列の整列

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

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

私が注文したのは、私が挿入した順序です(他には何が...)。しかし、私はハッシュ値の後でそれを並べ替えると思います。 私はアルゴリズム的な方法を想像することができます。しかし、おそらくすでに存在している機能や何かについて質問しています。

ありがとうございます!

+0

常に厳格な使用します。警告を使う。あなたのコードで。 – AbhiNickz

+1

あなたは100%正しいです。しかし、私はそのサンプルのために必要ではないと思う。その質問を説明するだけです。 – chris01

答えて

5

次のようにあなたが行うことができます​​キー、後ろの値によってソートします。

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

変数$a$bsortのための特別なVARSを予約されています。あなたのリスト項目が参照である場合、あなたはそのようなものをそのまま使うことができます。 Data::Printer

出力:

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

ありがとう、それは私が探していたperl'ishだ;-) – chris01

+0

@chrisあなたはsortで読んでください:) – simbabque

2

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

関連する問題