use strict; use Data::Dumper; my $hashref= { 'one' => 'two' }; my $aryref=[ $hashref ]; push @$aryref, $hashref; push @$aryref, $hashref; print "Without Deepcopy: ".Dumper($aryref); $Data::Dumper::Deepcopy=1; print "With Deepcopy: ".Dumper($aryref); print "Without Data::Dumper:\n"; print join("\n", @$aryref); __END__ Without Deepcopy: $VAR1 = [ { 'one' => 'two' }, $VAR1->[0], $VAR1->[0] ]; With Deepcopy: $VAR1 = [ { 'one' => 'two' }, { 'one' => 'two' }, { 'one' => 'two' } ]; Without Data::Dumper: HASH(0x8111a94) HASH(0x8111a94) HASH(0x8111a94)