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


in reply to Hashes of Hashes of Arrays? Is it possible?

Hi capriguy84,

Looks to me like you've got a simple typo ... first you called the data structure %HOH, then later you referred to it as %HoH. One other typo in your code is the extra quotation mark (or "double quotes" character) on this line:

pal => "[ "george", "jane", "elroy" ],

Fixing those 2 things, giving explicit values for $key and $value, and using Data::Dumper to check the results:

use strict; use warnings; use Data::Dumper; my %HoH = ( flintstones => { lead => "fred", pal => [ "george", "jane", "elroy" ], }, jetsons => { lead => "george", wife => [ "george", "jane", "elroy" ], boy => [ "george", "jane", "elroy" ], }, simpsons => { lead => "homer", wife => [ "george", "jane", "elroy" ], kid => [ "george", "jane", "elroy" ], }, ); my $key = 'flintstones'; my $value = 'Wilma'; printf "Before: %s\n", Dumper(\%HoH); $HoH{$key}{"name"} = $value; printf " After: %s\n", Dumper(\%HoH); __END__ Output (Note that 'Wilma' was successfully added): Before: $VAR1 = { 'simpsons' => { 'kid' => [ 'george', 'jane', 'elroy' ], 'lead' => 'homer', 'wife' => [ 'george', 'jane', 'elroy' ] }, 'jetsons' => { 'lead' => 'george', 'wife' => [ 'george', 'jane', 'elroy' ], 'boy' => [ 'george', 'jane', 'elroy' ] }, 'flintstones' => { 'lead' => 'fred', 'pal' => [ 'george', 'jane', 'elroy' ] } }; After: $VAR1 = { 'simpsons' => { 'kid' => [ 'george', 'jane', 'elroy' ], 'lead' => 'homer', 'wife' => [ 'george', 'jane', 'elroy' ] }, 'jetsons' => { 'lead' => 'george', 'wife' => [ 'george', 'jane', 'elroy' ], 'boy' => [ 'george', 'jane', 'elroy' ] }, 'flintstones' => { 'lead' => 'fred', 'name' => 'Wilma', 'pal' => [ 'george', 'jane', 'elroy' ] } };

s''(q.S:$/9=(T1';s;(..)(..);$..=substr+crypt($1,$2),2,3;eg;print$..$/