配列のハッシュがあり、配列サイズで並べ替えたいと思います。
これまでの私のコードは次のとおりです。
use strict;
use warnings;
my %hash_array = (
"array_1" => ["apple", "ball", "cat"],
"array_2" => ["def", "leppard", "rocks", "too"],
"array_3" => ["italian", "pastry", "missing", "cherry", "top"],
);
# Length of array_1
my $array_1_size = @{$hash_array{"array_1"}};
print "Should print three: $array_1_size\n";
# Found this here: https://stackoverflow.com/questions/15722286
# But my result remains unsorted
foreach my $key ( sort { $hash_array{$b} <=> $hash_array{$a}} keys %hash_array ) {
print "key: $key\n";
}
個々の配列のサイズを取得する方法は理解していますが、それを並べ替え関数と組み合わせる方法がわかりません。
ここから最後の foreach ブロックをコピーしましたが、出力が順序付けされていないため、その解決策は機能しません。コードの最後のブロックについていくつか質問がありました。
- 以前に参照された $b と $a が表示されません。これは、ソート機能が理解する組み込み参照ですか?
- 解決策は元のポスターではうまくいったようですが、私の場合はうまくいきません。しかし、当初の目標は似ています。配列サイズに基づいて順序付けされた出力を取得するために何が欠けていますか?
- 配列のハッシュを配列サイズで昇順および降順でソートする最良の方法は何ですか?