Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Re: flattening Complex Datastructures

by bronto (Priest)
on Feb 11, 2003 at 08:54 UTC ( #234339=note: print w/ replies, xml ) Need Help??


in reply to flattening Complex Datastructures

Your approach is really good if, all in all, what you need is to always reach the leaves of the tree --your structure is tree-like in fact

But, say you have a three-level hash. If you need to get an hash that lies in the middle, say /a/b your code soon gets complicated, while with real HoH you could simply write something like %b = %{$a->{b}}

But if you are ready to pay the tradeoff of slowness and complicateness, you probabily want to write a "driver" object, maybe one that you could tie your hashes to: you keep working with HoH on the front-end, and get with a flat hash on the back-end. But I'm not a tie expert so I can't tell if it is possible at all :-)

Cheers!
--bronto


The very nature of Perl to be like natural language--inconsistant and full of dwim and special cases--makes it impossible to know it all without simply memorizing the documentation (which is not complete or totally correct anyway).
--John M. Dlugosz


Comment on Re: flattening Complex Datastructures
Select or Download Code
Re: Re: flattening Complex Datastructures
by jdporter (Canon) on Feb 11, 2003 at 17:43 UTC
    Your approach is really good if, all in all, what you need is to always reach the leaves of the tree
    Yep. How many times have we seen this question:
    I have a vector of keys, @keys = qw( foo bar none ); How can I easily get at the HoHoH element $h{foo}{bar}{none} ???
    If we use the perl4 approach to multidimensional hashes, instead of true nested hashes, it's simple:
    $h{@keys}
    ...one that you could tie your hashes to: you keep working with HoH on the front-end, and get with a flat hash on the back-end.
    Yes, that sounds very much like the Tie::Multidim module.

    jdporter
    The 6th Rule of Perl Club is -- There is no Rule #6.

      Ah!, now i get your original post. This is pretty cool.


      time was, I could move my arms like a bird and...

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://234339]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (6)
As of 2014-12-21 18:55 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (106 votes), past polls