| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > Путь к элементу структуры данных |
| Автор: bonger 27.4.2011, 13:24 |
| Приветствую всех, вопрос следующий. Допустим есть сложная структура данных. Типа массив ссылок на хеши в которых ссылки на массивы в которых ссылки на другие массивы, хеши, скаляры и.т.п. И есть ссылка на один из элементов. Могу ли я по ней получить путь к этому элементу в общей структуре. Для примера: @arr = [{key0 => [{key1 => [["tryToFind"],[15]]},{key2=>[20]}]}] - адская структура. Мы разбирали структуру и сохранили ссылку на что то. Нарпимер $link. ref($link); #SCALAR print $$link; #15 Нам нужно по этим данным получить полный путь к элементу в структуре, типа такого: @arr[0]->[0]{key0}[0]->{key1}[1][0]; #путь к тем же "15". Нет ли каких модулей, позволяющих это сделать легко и непринужденно? |
| Автор: arto 27.4.2011, 14:04 |
| perldoc Data::Traverse только как вы одни 15 будете отличать от других? |
| Автор: bonger 27.4.2011, 14:13 |
| Так.. как бы образно говоря ссылка - ссылается на область памяти. А когда мы получаем доступ к элементу любым другим способом - мы точно так же обращаемся к этой же области памяти. Как можно их спутать? По поводу Traverse сейчас посмотримс, спасибо. Tracerse не совсем то... Хотелось бы типа(в продолжение предыдущего кода): print magic_data_finder(@arr, $link); # вывел бы нам @arr[0]->[0]{key0}[0]->{key1}[1][0] |
| Автор: Pfailed 27.5.2011, 21:17 | ||||
Просто написать рекурсивную функцию
|