It sounds like you are trying to store two different objects in the same object.
Instead of having child override anything, give it an additional $self->{mom}
attribute that is its own person.
A really horrible way to fix it would be to have child::introduce do
my $oldclass = ref $self;
bless $self, "person";
print "Here's my mom: ";
$self->introduce();
bless $self, $oldclass;