use Data::Dump qw/ dd /; { my @blah; $blah[0] = []; $blah[0][$i] = []; $blah[0][$i][$j] = []; $blah[0][$i][$j][$k] = {}; $blah[0][$i][$j][$k]{life} = 42; dd( \@blah ); } { my @blah; $blah[0][$i][$j][$k]{life} = 42; dd( \@blah ); } __END__ #### $blah[0] = new Array(); $blah[0][$i] = new Array(); $blah[0][$i][$j] = new Array(); $blah[0][$i][$j][$k] = new Object(); $blah[0][$i][$j][$k].life = 42;