![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| bonger |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 10.3.2011 Репутация: нет Всего: нет |
Приветствую всех, вопрос следующий.
Допустим есть сложная структура данных. Типа массив ссылок на хеши в которых ссылки на массивы в которых ссылки на другие массивы, хеши, скаляры и.т.п. И есть ссылка на один из элементов. Могу ли я по ней получить путь к этому элементу в общей структуре. Для примера: @arr = [{key0 => [{key1 => [["tryToFind"],[15]]},{key2=>[20]}]}] - адская структура. Мы разбирали структуру и сохранили ссылку на что то. Нарпимер $link. ref($link); #SCALAR print $$link; #15 Нам нужно по этим данным получить полный путь к элементу в структуре, типа такого: @arr[0]->[0]{key0}[0]->{key1}[1][0]; #путь к тем же "15". Нет ли каких модулей, позволяющих это сделать легко и непринужденно? Это сообщение отредактировал(а) bonger - 27.4.2011, 13:33 |
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
perldoc Data::Traverse
только как вы одни 15 будете отличать от других? |
|||
|
||||
| bonger |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 10.3.2011 Репутация: нет Всего: нет |
Так.. как бы образно говоря ссылка - ссылается на область памяти. А когда мы получаем доступ к элементу любым другим способом - мы точно так же обращаемся к этой же области памяти. Как можно их спутать?
По поводу Traverse сейчас посмотримс, спасибо. Tracerse не совсем то... Хотелось бы типа(в продолжение предыдущего кода): print magic_data_finder(@arr, $link); # вывел бы нам @arr[0]->[0]{key0}[0]->{key1}[1][0] Это сообщение отредактировал(а) bonger - 27.4.2011, 14:22 |
|||
|
||||
| mishnik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 6.3.2011 Репутация: 1 Всего: 1 |
||||
|
||||
| Pfailed |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 22 Всего: 39 |
Просто написать рекурсивную функцию
|
||||
|
|||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |