use strict; sub fiddleHash($) { my ($ref_hash) = @_; delete $ref_hash->{Quantity}{x}; } sub displayHash($) { my ($ref_Hash) = @_; foreach (keys %{$ref_Hash->{Quantity}}) { print "$_:$ref_Hash->{Quantity}{$_}\n"; } } my %hash1 = ( Quantity => { x => 1, y => 2 } ); my %hash2 = %hash1; print "hash1 before call\n"; print displayHash(\%hash1); print "hash2 before call\n"; print displayHash(\%hash2); fiddleHash(\%hash2); print "hash1 after call\n"; print displayHash(\%hash1); print "hash2 after call\n"; print displayHash(\%hash2); #### hash1 before call y:2 x:1 hash2 before call y:2 x:1 hash1 after call y:2 hash2 after call y:2