use Data::Dumper; # your initialization code here print Dumper \%hash; #### # WRONG $hash{"LISTS"}=[([]) x $length] #### $hash{LISTS} = [ map [], 1..$length ]; #### my %hash; # automatically creates $hash{LISTS} as an array ref, # and $hash{LISTS}[3] as an array ref: push @{$hash{LISTS}[3]}, 'new item'; # also works for direct assignment: $hash{LISTS}[4][0] = 'other new item';