$ cat flog.pl #!/usr/bin/env perl use strict; use warnings; my $o = bless {a=>1,b=>2,c=>3}, 'Flog'; my $j = { J => { %$o }, # Make a copy of the object K => $o # or just pass it in }; print "Before:\n"; dumpit($j); $j->{J}{a}=7; $j->{K}{b}=8; $o->{c}=9; print "After:\n"; dumpit($j); sub dumpit { my $t = shift; for my $k ('a' .. 'c') { print "$k : $t->{J}{$k} : $t->{K}{$k} : $o->{$k}\n"; } } Roboticus@Waubli ~ $ perl flog.pl Before: a : 1 : 1 : 1 b : 2 : 2 : 2 c : 3 : 3 : 3 After: a : 7 : 1 : 1 b : 2 : 8 : 8 c : 3 : 9 : 9