Это не классическое дерево. В этом валяются ссылки на хэши и элементы массива идут попеременно "элемент-ссылка на значение". И типы не проверяются при компиляции. И единственный абзац доки не говорит, чем будет корень дерева - парой или более длинным масивом.
Не, я, конечно, мог бы выспаться, тщательно пропарсить эту доку, и таки-написать правильный код. Идея не в этом, а в том, что подход сам по себе уродский.
А что Вам Data::Dumper говорит? Пары "элемент-ссылка на значение" очень похожи на хеш в списковом контексте - то есть на то, что Вы вместо хеша написали массив.
А насчет непроверки во время компиляции - так это обратная сторона медали, вот и все. языки с динамической типизацией имеют и преимущества.
Про то, как хэш превращается в массив, я знаю. Но это не оно, это именно по спеке отсюда: http://aspn.activestate.com/ASPN/docs/ActivePerl/5.8/site/lib/XML/Parser.html#tree Я даже написал shift @tree; %nodes = @tree; Но всё равно не смог достаточно быстро разобрать дерево. Конкретно мне не нравится разнородность структуры, которую отдаёт парсер - это как-то слишком коряво. А до преимуществ динамической типизации я ещё не дорос - всегда полагался на компиляторы. В результате перешёл на стиль subs, там все типы простые. Учиться и учиться...
(no subject)
29/1/07 13:57 (UTC)(no subject)
29/1/07 14:51 (UTC)Поправлю пост.
(no subject)
29/1/07 15:07 (UTC)(no subject)
29/1/07 16:07 (UTC)И единственный абзац доки не говорит, чем будет корень дерева - парой или более длинным масивом.
Не, я, конечно, мог бы выспаться, тщательно пропарсить эту доку, и таки-написать правильный код. Идея не в этом, а в том, что подход сам по себе уродский.
(no subject)
29/1/07 16:12 (UTC)А насчет непроверки во время компиляции - так это обратная сторона медали, вот и все. языки с динамической типизацией имеют и преимущества.
(no subject)
29/1/07 16:54 (UTC)Я даже написал shift @tree; %nodes = @tree;
Но всё равно не смог достаточно быстро разобрать дерево.
Конкретно мне не нравится разнородность структуры, которую отдаёт парсер - это как-то слишком коряво.
А до преимуществ динамической типизации я ещё не дорос - всегда полагался на компиляторы.
В результате перешёл на стиль subs, там все типы простые. Учиться и учиться...