{ package ClassA; ... sub new { ... my $self = bless({}, $class); $self->{...} = ...; return $self; } ... } { package ClassB; our @ISA = 'ClassA'; sub new { ... my $self = $class->SUPER::new(); $self->{...} = ...; return $self; } ... } { package ClassC; our @ISA = 'ClassB'; sub new { ... my $self = $class->SUPER::new(); $self->{...} = ...; return $self; } ... }