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$..$/