c:\@Work\Perl\monks>perl -wMstrict -MData::Dump -le "my $hashref = { foo => { bar => 'nice' } }; dd 'before pass1: ', $hashref; ;; pass1({ params => { %$hashref } }); ;; dd 'after pass1: ', $hashref; ;; ;; sub pass1 { my $self = shift; my $params = $self->{params}; dd 'in pass1, before assignments ', $params; ;; $params->{fizz} = 'fazz'; $params->{foo}{bar} = 'KaPow'; dd 'in pass1 after assignments ', $params; } " ("before pass1: ", { foo => { bar => "nice" } }) ("in pass1, before assignments ", { foo => { bar => "nice" } }) ( "in pass1 after assignments ", { fizz => "fazz", foo => { bar => "KaPow" } }, ) ("after pass1: ", { foo => { bar => "KaPow" } })