У меня есть хэш-структуру, подобную следующей:Сортировка по значению хэш хэш хэшей Perl
KeyA => {
Key1 => {
Key4 => 4
Key5 => 9
Key6 => 10
}
Key2 => {
Key7 => 5
Key8 => 9
}
}
KeyB => {
Key3 => {
Key9 => 6
Key10 => 3
}
}
мне нужно распечатать пути обхода через хеш-структуры и значения в конце обхода , так что это упорядочено по значению. Например, для приведенной выше хеша-структуру мне нужно напечатать:
KeyB Key3 Key10 3
KeyA Key1 Key4 4
KeyA Key2 Key7 5
KeyB Key3 Key9 6
KeyA Key2 Key8 9
KeyA Key1 Key5 9
KeyA Key1 Key6 10
В настоящем время, чтобы решить эту проблему я обход хеша-структуру с использованием вложенных циклов Foreach и созданием сплюснутого хэша, вставив элемент с ключом, равным путь пересечения (например, «KeyA Key3 Key10») и значение, равное значению в конце пути обхода (например, 3), а затем выполнение другого цикла foreach, который сортирует сглаженный хеш по значению.
Есть ли более эффективный способ сделать это?
Если значения листьев не обязательно уникальны, вы должны «нажимать @ {$ flat {$ path}} => $ value'. –