|Perl: the Markov chain saw|
Re: Reading an arbitrary hierarchy into a hash treeby abstracts (Hermit)
|on Aug 07, 2001 at 03:06 UTC||Need Help??|
Here is one way to do it. It basically uses a stack to keep pointers to the last hash created. Initially, we add a hash ref to it. For every line in our data, we count how many tabs are prepended. This tells us how deep we are in the tree and the stack should be shortened accordingly (pointers from the previous subtree are removed). This data line is then added to the hash pointed to by the last item in the stack. It is also pushed to the stack to make it the new root.
Try tracing the code to see exactly how it works. Btw, empty hashes are used as values of leaf nodes instead of empty strings. Modifying the code to do that should not be hard.
Hope this helps,,,
PS. Convert the spaces in the __DATA__ to appropriate tabs.
Here is the dump: