У меня есть хэш массивов, и я хотел бы отсортировать их по размеру массива.Как сортировать хэш массивов по размеру массива
Вот мой код до сих пор:
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 с here, но это решение не работает для меня, так как мой вывод не упорядочен. У меня возникли некоторые вопросы о последнем блоке кода:
- Я не вижу $ b и $, на которые ссылался ранее. Является ли это встроенной ссылкой, которую понимает функция сортировки?
- Решение, похоже, сработало для оригинального плаката, но оно не работает в моем случае. Но наши первоначальные цели схожи. Что мне недостает, чтобы получить упорядоченный вывод на основе размера массива?
- Каков наилучший способ сортировки хэша массивов по размеру массива в порядке возрастания и убывания?
Если вы посмотрите на вопрос, на который вы ссылаетесь, на плакате написано: «Я не знаю, почему это не работает» * о код, который вы скопировали. Ответ, который он принял, - это то, что вы должны копировать. – Borodin