in reply to Re^2: reference question between sub
in thread reference question between sub

actually, now I can see the structure, but my question still remains, how do I reiterate over hash reference which has dynamic key to get the value out?
$VAR1 = [ { '13-3:USNJN4SOIMT_N3_N' => '16' }, { '15-73:USNJN4SOIMT_N3_N' => '34' }, { '13-84:USNJN4SOGLONAPUS_N' => '34' },

Replies are listed 'Best First'.
Re^4: reference question between sub
by ikegami (Patriarch) on Sep 14, 2007 at 01:24 UTC

    Again, you need to fix the basic problem first. Your structure is bad. There's no point to having hashes with just one key.

    Again, it's hard to say what it should be without knowing what this data is and what you are doing with it.

    Perhaps the following is what you need?

    $VAR1 = [ [ '13-3:USNJN4SOIMT_N3_N', '16' ], [ '15-73:USNJN4SOIMT_N3_N', '34' ], [ '13-84:USNJN4SOGLONAPUS_N', '34' ], ];

    or maybe even

    $VAR1 = [ [ '13-3', 'USNJN4SOIMT_N3_N', '16' ], [ '15-73', 'USNJN4SOIMT_N3_N', '34' ], [ '13-84', 'USNJN4SOGLONAPUS_N', '34' ], ];
Re^4: reference question between sub
by SuicideJunkie (Vicar) on Sep 14, 2007 at 13:38 UTC

    I hesitate to say this, since you really should not be using hashes to store a single value. But it is still good to know how to get the keys of a hash.

    If your hash keys are unique you could put them all in the same hash as below. If they are not unique, you'd have to do something like ikegami suggests, and make it a 2D array.

    #! perl use strict; use warnings; my %VAR1 = ( '13-3:USNJN4SOIMT_N3_N' => '16', '15-73:USNJN4SOIMT_N3_N' => '34', '13-84:USNJN4SOGLONAPUS_N' => '34', ); foreach my $key (keys(%VAR1)) { print "Key '$key' has value '${VAR1{$key}}'\n"; }

    Outputs:

    Key '13-3:USNJN4SOIMT_N3_N' has value '16' Key '13-84:USNJN4SOGLONAPUS_N' has value '34' Key '15-73:USNJN4SOIMT_N3_N' has value '34'