У меня есть хэш-структура, подобная следующей:
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, который сортирует сглаженный хэш по значению.
Есть ли более эффективный способ сделать это?
push @{ $flat{$path} } => $value
. - person Greg Bacon   schedule 17.08.2010