my $hashref = { num1 => 1, num2 => 2 }; print "before pass1: $hashref->{num1}\n"; #prints 1 pass1({ params => $hashref }); print "after pass1: $hashref->{num1}\n"; #prints 2 but would like it to stay as 1 sub pass1 { my $self = shift; my $params = $self->{params}; foreach my $key (keys %{ $params }) { $params->{$key}++; } print "Inside pass1...\n"; print "$params->{num1}\n"; # prints 2 correct print "$params->{num2}\n"; # prints 3 correct }