Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Re: Iterate over a perl nested hash data structure

by nvivek (Vicar)
on Feb 20, 2013 at 07:00 UTC ( #1019720=note: print w/ replies, xml ) Need Help??


in reply to Iterate over a perl nested hash data structure

In perl, if we want to get the key/value pairs of hash, you can use the following code.

use strict; use warnings; # initializing hash with three four-value pairs, among those two are h +aving inner hashes ( Numerals, Alpha ) which have three key-value pai +rs in-built my %hash = ( 'Numerals' => { '1' => 'One', '2' => 'Two', '3' => 'Three', }, 'Alpha' => { 'A' => 'Apple', 'B' => 'Ball', 'C' => 'Cat' }, 'I' => 'Roman One', 'II' => 'Roman Two' );<br/> # for getting key-value pairs of above hash foreach(keys%$hash) { # by default key stored in $_ as per above foreach statement # checks whether value of hash is another hash if(ref($hash{$_}) eq 'HASH') { # iterate the keys set of inner hash foreach my $inner_key (keys%{$hash{$_}}) { # printing key and value of inner hash print "Key:$inner_key and value:$hash{$_}{$inner_key}\n"; } } else { print "Key: $_ and Value: $hash{$_}\n" } }


Comment on Re: Iterate over a perl nested hash data structure
Download Code
Replies are listed 'Best First'.
Re^2: Iterate over a perl nested hash data structure
by NewLondonPerl1 (Acolyte) on Feb 20, 2013 at 07:20 UTC
    Thanks ever so much for your help :-) I will try this out

      Sorry guys I still can't get this working. I all tried all the examples. This is a small sample of the data that is dumped via data::dumper

      $VAR1 = 'tag'; $VAR2 = { 'dev' => [ { 'nfsmount' => { 'bigstor_nfs' => {

      I am putting all of this data into a hash but when I print the keys in the hash all I can print out is 'dev' and 'tag'. I want to get past the point where the right [ bracket is (which is array called 'dev'). Below 'nfsmount' I have about 50 different hashes defined, one of which is called 'bigstor_nfs'. I want to be able to search through all the available hashes and depending on what the name of the hash is I then want print out all the key/values contained within each hash and output this to another file.

        So for instance I want to read the hash and do something like this. If find hash called 'bigstor_nfs' then print out to another file all the key/value pairs. then carry on to the next hash name at this level in the data structure. If thats called 'test_nfs' then print out all the key/values pairs to the same output file and then continue doing this comparing the names of each hash until the end of the data structure I think this is possible. I have tried so may different ways and I cant get this to work. Please can you help me?

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (15)
As of 2015-07-29 13:39 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (263 votes), past polls