Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Re: iterate through a hash with two keys

by LanX (Canon)
on Apr 29, 2013 at 17:36 UTC ( #1031268=note: print w/ replies, xml ) Need Help??


in reply to iterate through a hash with two keys

Not sure what you want ...

... if $label should be variable, try

 print $hash{$_}{$label} for keys %hash

Update:

or shorter

 print $_->{$label} for values %hash

Cheers Rolf

( addicted to the Perl Programming Language)

errata

s/values/keys/ in first expression


Comment on Re: iterate through a hash with two keys
Select or Download Code
Replies are listed 'Best First'.
Re^2: iterate through a hash with two keys
by fionbarr (Friar) on Apr 29, 2013 at 17:45 UTC
    I didn't ask the question properly. I want to print all the labels and values for each of 'a' .. 'h' the label is a variable. I am filling this hash like: $hash{a}{$label} = $value; where $label is a text string.
      This may be what you want.
      use strict; use warnings; my $label1 = 'L1'; my $label2 = 'L2'; my %hash; @hash{'a' .. 'h'} = ( {$label1 => 1 }, {$label1 => 2 }, {$label2 => 3 }, {$label1 => 4 }, {$label2 => 5 }, {$label1 => 6 }, {$label2 => 7 }, {$label1 => 8 }, ); while ( my( $key,$subhash ) = each %hash) { print "$key: $subhash->{$label1}\n" if exists $subhash->{$label1}; }
      OUTPUT:
      a: 1 d: 4 h: 8 b: 2 f: 6
      Bill
      > I didn't ask the question properly.

      indeed!

      > I want to print all the labels and values for each of a .. h

      DB<103> @hash{$_} = {x=>$x++,y=>$x++} for a..h => "" DB<112> while ( my ($k1,$v1) = each %hash ) { while ( my ($k2,$v2) = each %$v1 ) { print "$k1 - $k2 -$v2\n" } } e - y -25 e - x -24 a - y -17 a - x -16 d - y -23 d - x -22 ... # and so on

      But are you looking for Data::Dumper ?

      UPDATE

      DB<106> print Dumper \%hash $VAR1 = { 'e' => { 'y' => 9, 'x' => 8 }, 'a' => { 'y' => 1, 'x' => 0 }, 'd' => { 'y' => 7, 'x' => 6 }, 'c' => { 'y' => 5, 'x' => 4 }, ...

      FWIW I prefer Data::Dump or YAML, but Data::Dumper is core.

      Cheers Rolf

      ( addicted to the Perl Programming Language)

      ) interesting Module::Build::YAML was first released with perl 5.009004

      UPDATE YAML
      DB<106> use YAML::Tiny => 0 DB<107> Dump(\%hash) --- a: x: 16 y: 17 b: x: 18 y: 19 c: x: 20 y: 21 d: x: 22 y: 23 ...
        doing it like this:
        my @array = qw( FirstName LastName MiddleName LegalInd DateOfBirth Sex Race Ethnicity Height Weight Build Eyes Hair SocSecNo MaritalStatus PlaceOfBirthCit +y PlaceOfBirthState AddressType DfAdate StreetNumber StreetName StreetType City State Zip ); for (@array) { $xml_writer->dataElement("$_" => $t{A}{$_}); }

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (4)
As of 2015-07-30 02:43 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 (269 votes), past polls