http://qs321.pair.com?node_id=626188


in reply to Traverse an unknown multi-dimensional hash

How would you traverse this hash to print out all key => value pairs. The only way I know how is a series of for loops, however that would mean you have to know in advance how deep it goes.
If printing is all you want, use Data::Dumper or one of its kind as suggested - if you want to code the stuff yourself (anybody smelling homework here?), or have really completly different needs than printing, then have a look at ref, which you can use to determin the datatype of the inspected value, and thus to decide what action to take (recurse into another hash, recurse into array, print a scalar, ...). A recursive implementation will be easiest to implement - however if the structures you expect are deeply nested, I'd use a stack to implement an iterative solution.

regards,
tomte


An intellectual is someone whose mind watches itself.
-- Albert Camus

Replies are listed 'Best First'.
Re^2: Traverse an unknown multi-dimensional hash
by Anonymous Monk on Jul 12, 2007 at 11:09 UTC
    Thanks, your help is appreciated, i've managed to print out what I want working using Data::Dumper. I just needed to testing whether a particular hash holds the information I need. You can "smell" homework all you like but it wasnt the case. Why cant it be a newbie getting to grips with programming, who wants to change some existing code he has found? Half of learning to program is not only writing your own code but understanding and altering existing code, is it not?

      Why cant it be a newbie getting to grips with programming, who wants to change some existing code he has found?
      It certainly can - therefore I answered with the pointers to the solution GrandFather provided in code - it would have helped you in either case.
      I just needed to testing whether a particular hash holds the information I need.
      Then why didn't you state that in your posting? While printing the whole datastructure and scanning it manually is surly working, solutions to search for particular values/keys in an arbitrary structured hash aren't that hard to achieve either :-)

      Acting as anonymonk and asking seemingly simple to answer questions doesn't help getting a lot of trust in advance, at least with me.

      A newbie getting to grips with programming in Perl could certainly go to alot of places worse than perlmonks, but not that many better suited to advance your skills: Please register an account, read Welcome to the Monastery! Make yourself at home., have a look around - and be indeed welcome.

      regards,
      tomte


      An intellectual is someone whose mind watches itself.
      -- Albert Camus