use Data::Dumper; use Time::Piece; my $tp = gmtime; my @array = (200,400); my $data = { 'one' => { 'tp' => $tp, 'array' => \@array, }, 'two' => { 'tp' => $tp, 'array' => \@array, }, }; print Dumper $data; Output: $VAR1 = { 'one' => { 'array' => [ [ 200, 400 ] ], 'tp' => bless( [ 35, 2, 2, 24, 2, '116', 4, 83, 0, 1458784955, 0 ], 'Time::Piece' ) }, 'two' => { 'array' => $VAR1->{'one'}{'array'}, 'tp' => $VAR1->{'one'}{'tp'} } }; #### use Data::Dumper; $Data::Dumper::Deepcopy = 1; ... Output: $VAR1 = { 'one' => { 'array' => [ [ 200, 400 ] ], 'tp' => bless( [ 48, 10, 2, 24, 2, '116', 4, 83, 0, 1458785448, 0 ], 'Time::Piece' ) }, 'two' => { 'array' => [ [ 200, 400 ] ], 'tp' => bless( [ 48, 10, 2, 24, 2, '116', 4, 83, 0, 1458785448, 0 ], 'Time::Piece' ) } };