3

ちょっと、配列参照を保持しているハッシュをソートするクールな「ワンライナー」があるかどうか疑問に思っていました。したがって、ハッシュには次のような一連のキー/値があります。

$DataBase{$key} = \@value;

array[0]ただし、ハッシュを要素でソートしたいと思います。次に、それらをループします。私はこれを始めに持っていました:

foreach my $key (sort {$DataBase{$a} cmp $DataBase{$b} } keys %DataBase)

しかし、それは明らかに、ハッシュを配列のポインター値でソートするだけです。「1行」である必要はありませんが、ハッシュの再構築を伴わない解決策を望んでいました.

4

3 に答える 3

8
foreach my $key (sort {$DataBase{$a}->[0] cmp $DataBase{$b}->[0] } keys %DataBase)
于 2009-05-05T22:01:41.227 に答える
2

記録として (おそらく C のバックグラウンドを持っているでしょう)、Perl にはポインターはありませんが、参照があります。

Perl [...] では、無名のデータ構造を作成でき、「参照」と呼ばれる基本的なデータ型をサポートしています。これは、大まかに C ポインターに相当します。C ポインターがプロシージャーと同様にデータを指すことができるように、Perl の参照は、従来のデータ型 (スカラー、配列、およびハッシュ) およびサブルーチン、型グロブ、およびファイルハンドルなどの他のエンティティーを参照できます。C とは異なり、生のメモリの場所を覗いたり突いたりできません。

似ていますが、同じではありません。

C.

于 2009-05-05T22:44:12.093 に答える
1

How can I sort a hash-of-hashes by key in Perl?と同じ基本的な質問をしていると思います。. Perl FAQ にある私の答えは、好きな方法でハッシュをソートする方法を示しています。

于 2009-05-07T05:27:20.010 に答える