my $test = Test->new(123); $test->change(345); print $test->{id}; # Should print 345 package Test; sub new { bless{ id=>$_[1], } } sub change { my($self,$id) = @_; my $t2 = Test->new($id); $self = $t2; # This line is broke }