#!/usr/bin/perl -w use strict; use Data::Dumper; my $this = {'data'=>{}, 'name'=>'this'}; my $that = {'name'=>"that", 'value'=>"123"}; $this->{data}->{ $that->{'name'} } = $that; print Dumper($this); $that->{'name'} = "them"; print Dumper($this); This gives me $VAR1 = { 'name' => 'this', 'data' => { 'that' => { 'value' => '123', 'name' => 'that' } } }; $VAR1 = { 'name' => 'this', 'data' => { 'that' => { ^^^^ 'value' => '123', NOT CHANGED 'name' => 'them' } ^^^^ } CHANGED };