in reply to Aggregation problem
$self->{Person} = \shift; in Updater->new should be $self->{Person} = shift;. The Person object is already a reference. Given that change the following code:
package main; my $him = Person->new ('Bob wibble'); my $ud = Updater->new ($him); $ud->updateName (); print $ud->{NAME};
prints:
Bob wibble
|
|---|