use 5.014; package OldObj { sub new {bless {}, __PACKAGE__} sub test { print "You're still using the old object!\n"; } }; package NewObj { sub new {bless {}, __PACKAGE__} sub test { print "Yuppie! This is the new object!\n"; } }; my $keep = OldObj->new(); # object_1 my $change = OldObj->new(); # object_2 my $ref1 = $change; # points to object_2 my $ref2 = $ref1; # points to object_2 # object_2 needs to be replaced with another object, # but the object_1 should still be ref 'OldObj' # ... code needs to be added here ... say ref($ref1); # should print 'NewObj' $ref2->test(); # should go to NewObj::test() $keep->test(); # should go to OldObj::test()