in reply to Why is this not what I think it is...

use strict; use warnings;. You use %hoh in the first code sample and %HoH in the second.

{$HoH{1}{'individual'}} tries to generate an anonymous hash but only provides one element - a hash requires pairs of elements. Very likely you intended my @value = @{$HoH{$counter}{'individual'}}; to cast the array reference to an array.

Possibly the overall code you are looking for is something like:

use strict; use warnings; my %HoH; my @newind = (1 .. 3); my @newchroma = (4 .. 6); my @newchromb = (7 .. 9); $HoH{1} = { individual => [@newind], chromasome1 => [@newchroma], chromasome2 => [@newchromb], }; my @value = @{$HoH{1}{'individual'}}; print "@value \n"; $value[0] = 42; $HoH{1}{'chromasome1'} = [@value]; print "@{$HoH{1}{'chromasome1'}}\n";

Prints:

1 2 3 42 2 3

Perl is environmentally friendly - it saves trees