一から作れるなら、こんな感じか。
PersonをインターフェイスにしてChildに多重継承させてもいいけど、
ちょっとゴチャつきそう。

package Person;
sub new {
my $class = shift;
return bless { @_ }, $class;
}
sub whoami {}

package Parent;
use base 'Person';

sub whoami { print "parent\n" }

package Child;
use base 'Person';

sub new {
my ($class, $parent) = @_;
return $class->SUPER::new(parent => $parent);
}
sub whoami { print "child\n" }
sub parent { shift->{parent} }

package main;

my $parent = Parent->new;
my $obj = Child->new($parent);
$obj->whoami; # child
$obj->parent->whoami; # parent