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' ] } };