Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Hash of array of hashes

by Anonymous Monk
on Jul 08, 2005 at 06:12 UTC ( #473342=perlquestion: print w/replies, xml ) Need Help??

Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Hi Monks, I am trying to create a Hash or array of hashes for the following condition
1 | p1=v1,p2=v2 | p3=v3,p4=v4
My hash of array of hashes should be some thing like this
%hash = ( 1 => [ {p1 => v1, p2 => v2}, {p3 => v3, p4 => v4} ] );
I have written the following code. It seems to be not working, can any one suggest what is wrong in this snippet
my @conditioin = split(/\|/); %{$mapping_rule{$condition[0]}}->[0]} = map {split (/=/, $_)} = map {s +plit (/\,/, $condition[1])}; %{$mapping_rule{$condition[0]}}->[1]} = map {split (/=/, $_)} = map {s +plit (/\,/, $condition[2])}; foreach my $rule (keys %mapping_rule) { print "rule is $rule\n"; foreach my $cond (@{$mapping_rule{$rule}}) { foreach my $param (keys %{$mapping_rule{$rule}->{$cond}}) { print "Parameter is $param and value is ${$mapping_rule{$r +ule}->{$cond}->{$param}}\n"; } } }

Replies are listed 'Best First'.
Re: Hash of array of hashes
by monarch (Priest) on Jul 08, 2005 at 06:38 UTC
    Solved!

    Produces:

    $VAR1 = { '1' => [ { 'p2' => 'v2', 'p1' => 'v1' }, { 'p3' => 'v3', 'p4' => 'v4' } ] };
      Thanks, that was really fast and really good.
Re: Hash of array of hashes
by sh1tn (Priest) on Jul 08, 2005 at 06:28 UTC
    ... foreach my $cond (@{$mapping_rule{$rule}}) { foreach my $param (keys %{$cond}) { ...


Re: Hash of array of hashes
by ww (Archbishop) on Jul 08, 2005 at 14:06 UTC

    You may wish to note that $condition[0] does not relate to any element of @conditioin ...which is just one of the examples in your original post that show why using strict and warn is such good practice.
    the (relevant) others are:

    Unmatched right curly bracket at mapping.pl line 7, at end of line syntax error at mapping.pl line 7, near "]}"

    Perhaps these are merely typos created while posting your question; if so, another recommendation: cut and paste code, rather than risk introducing irrelevant typos (or, as has occasionally occured, fixing a problem by eliminating a typo).

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (4)
As of 2020-05-31 08:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    If programming languages were movie genres, Perl would be:















    Results (173 votes). Check out past polls.

    Notices?