http://www.perlmonks.org?node_id=1008529

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

Hi guys hoping you can help

For whatever reason that switch inside my head that turns on the light to say I understand hashes just will not flick on! It's possible that I'm running before I can walk as I've forced my way through understanding and retrieving data from complex hashes, and written good few bits of code in the last few months, but I just cannot get it into my head how to build those hashes unless I explicitly hard code them.

Can you assist with a sample piece of code that may finally enable me to crack it?

#!/bin/perl # use Data::Dumper; my @primary = qw( foo bar ); my @secondary = qw( p0 p1 p2 ); my @tertiary = qw( itema itemb ); my %HoH; foreach $primary( @primary ) { print "\t$primary\n"; foreach $secondary( @secondary ) { print "\t\t$secondary\n"; foreach $tertiary( @tertiary ) { print "\t\t\t$tertiary\n"; %HoH = ( $primary => $secondary => $tertiary); #%HoH = {$primary}{$secondary} => $tertiary); } } } print Dumper \%HoH;

The basic debug output from the print should describe the hash I'm trying to create. That is a key of "primary", containing a key of "secondary" elements with elements of "tertiary".
ie.

foo => p0 => itema itemb p1 => itema itemb p2 => itema itemb bar => p0 => itema itemb p1 => itema itemb p2 => itema itemb

But what I actually get is

$VAR1 = { 'bar' => 'p2', 'itemb' => undef };