次のように構築されたハッシュデータ構造のハッシュがあるとしましょう:
%HoH => (
flintstones => {
family_members => "fred;wilma;pebbles;dino",
number_of_members => 4,
},
jetsons => {
family_members => "george;jane;elroy",
number_of_members => 3,
},
simpsons => {
family_members => "homer;marge;bart;lisa;maggie",
number_of_members => 5,
},
)
number_of_members
キー (この場合はファミリ)を最大値から最小値の順に並べ替えるにはどうすればよいですか? 次に、最高の2つを出力したいと思います。これは一般的な考え方ですが、間違っていることはわかっています。
foreach $value (
sort {
$HoH{$a}{$number_of_members} cmp $HoH{$b}{$number_of_members}
} keys %HoH)
my $count = 0;
while ($key, $value) = each %HoH) {
if (count <= 2){
print "${HoH}{$key}\t$key{$value}";
}
}
continue {
$count++;
};
コードを印刷したい (スペースはタブで区切られている):
simpsons homer;marge;bart;lisa;maggie
flintstones fred;wilma;pebbles;dino