package Test; sub new{ my $class = shift; my $self = {}; bless $self, $class; } sub one{ my $self = shift; my %hash = (1 => 'unchanged'); $self]->{HASH} = \%hash; return $self->{HASH}; } sub two{ $_[0]->{HASH} = {1 => 'one'}; } 1; #### use Test; use Data::Dumper; my $t = Test->new(); my $p = $t->one(); print "First: " . Dumper($p) . "\n\n"; $t->two; print "Second: " . Dumper($p) . "\n\n"; #expecting this to change the $p hashref