#!perl -lw use strict; use Data::Dumper; my $hash={"A".."F"}; my $array=[$hash,'foo',$hash]; print $_ for "Normal:", Data::Dumper->new([$array],[qw(array)])->Dump(), "Deepcopy:", Data::Dumper->new([$array],[qw(array)])->Deepcopy(1)->Dump(), "Purity:", Data::Dumper->new([$array],[qw(array)])->Purity(1)->Dump(), "Terse:", Data::Dumper->new([$array],[qw(array)])->Indent(1)->Terse(1)->Dump(); #### Normal: $array = [ { 'A' => 'B', 'C' => 'D', 'E' => 'F' }, 'foo', $array->[0] ]; Deepcopy: $array = [ { 'A' => 'B', 'C' => 'D', 'E' => 'F' }, 'foo', { 'A' => 'B', 'C' => 'D', 'E' => 'F' } ]; Purity: $array = [ { 'A' => 'B', 'C' => 'D', 'E' => 'F' }, 'foo', {} ]; $array->[2] = $array->[0]; Terse: [ { 'A' => 'B', 'C' => 'D', 'E' => 'F' }, 'foo', $array->[0] ] #### #!perl -lw use strict; use Data::Dumper; my $hash ={'A'..'F'}; my $array=[]; @$array=($hash,'foo',$hash,[$hash,'bar',$hash,$array]); print $_ for "Normal:", Data::Dumper->new([$array],[qw(array)])->Dump(), "Deepcopy:", Data::Dumper->new([$array],[qw(array)])->Deepcopy(1)->Dump(), "Purity:", Data::Dumper->new([$array],[qw(array)])->Purity(1)->Dump(), "PureDeep:", Data::Dumper->new([$array],[qw(array)])->Deepcopy(1)->Purity(1)->Dump(); #### Normal: $array = [ { 'A' => 'B', 'C' => 'D', 'E' => 'F' }, 'foo', $array->[0], [ $array->[0], 'bar', $array->[0], $array ] ]; Deepcopy: $array = [ { 'A' => 'B', 'C' => 'D', 'E' => 'F' }, 'foo', { 'A' => 'B', 'C' => 'D', 'E' => 'F' }, [ { 'A' => 'B', 'C' => 'D', 'E' => 'F' }, 'bar', { 'A' => 'B', 'C' => 'D', 'E' => 'F' }, $array ] ]; Purity: $array = [ { 'A' => 'B', 'C' => 'D', 'E' => 'F' }, 'foo', {}, [ {}, 'bar', {}, [] ] ]; $array->[2] = $array->[0]; $array->[3][0] = $array->[0]; $array->[3][2] = $array->[0]; $array->[3][3] = $array; PureDeep: $array = [ { 'A' => 'B', 'C' => 'D', 'E' => 'F' }, 'foo', { 'A' => 'B', 'C' => 'D', 'E' => 'F' }, [ { 'A' => 'B', 'C' => 'D', 'E' => 'F' }, 'bar', { 'A' => 'B', 'C' => 'D', 'E' => 'F' }, [] ] ]; $array->[3][3] = $array;