in reply to Printing a hash of arrays ??

First off, that code isn't making that result. You can't treat a hash reference like an array reference. :-)

Secondly, you need to iterate an additional level. I'm seeing you make this mistake (or some variant thereof) in every post you've made. You're trying the first time, maybe trying again, then giving up. You really need to think through what you're doing. If you haven't already, I would suggest hand-tracing your program, writing up the data structures on a whiteboard (or somesuch), and seeing how the program moves through the data structure.

In all programs, and especially yours, the data structure is king. The code only walks around within it, grabbing stuff as it needs. You haven't fully learned your data structure, so you have no idea how to work with it. I and a coworker once spent over a week working on the data structure for one function. Most of that was spent in front of a whiteboard, not a computer.

The point is that time spent coding when you don't understand the problem domain or how you're going to represent it is time wasted - pure and simple. In fact, it's worse than time wasted because you're going to keep the dreck that you came up with during that wasted time. This is despite the fact that you would save time by throwing away what you had and starting from scratch.

------
We are the carpenters and bricklayers of the Information Age.

Don't go borrowing trouble. For programmers, this means Worry only about what you need to implement.

Please remember that I'm crufty and crochety. All opinions are purely mine and all code is untested, unless otherwise specified.

Replies are listed 'Best First'.
Re: Re: Printing a hash of arrays ??
by Futant (Acolyte) on Mar 27, 2003 at 12:49 UTC
    At times like this I am thankful for Data::Dumper.
      OK, I'm still confused...lol (I've created a data structure that I can't retrieve info from
      I've revised my code to the following:
      foreach $key (keys %key_hash) { print "KEY: $key\n"; print "MIN_TIME_DIFF: $key_hash{$key}{Min_Time_Diff}\n"; print "MAX_TIME_DIFF: $key_hash{$key}{Max_Time_Diff}\n"; print "ERROR STATUS: $key_hash{$key}{Error_Status}\n"; foreach my $value (%{$key_hash{$key}}) { print "VALUE: $value\n"; } }
      All I want to do is extract the two array elements from each key in the hash of hashes
      My code is returning the following:
      KEY: response_1.3.6.1.2.1.2.2.1.12.27 MIN_TIME_DIFF: 1:00:00.0000 MAX_TIME_DIFF: 1:00:00.0000 ERROR STATUS: No error VALUE: 1.3.6.1.2.1.2.2.1.15.28 VALUE: ARRAY(0x1e47028) VALUE: 1.3.6.1.2.1.2.2.1.15.27 VALUE: ARRAY(0x1e49fc8) VALUE: 1.3.6.1.2.1.2.2.1.11.27 VALUE: ARRAY(0x1e49fd8)
      What am I doing wrong?
        Try this:
        foreach my $value (%{$key_hash{$key}}) { if (UNIVERSAL::isa($value, 'ARRAY')) { print "VALUE: @$value\n"; } else { print "VALUE: $value\n"; } }

        ------
        We are the carpenters and bricklayers of the Information Age.

        Don't go borrowing trouble. For programmers, this means Worry only about what you need to implement.

        Please remember that I'm crufty and crochety. All opinions are purely mine and all code is untested, unless otherwise specified.