sub new { bless {}, shift; } #### package B; sub init { my $self = shift; @$self {qw /_foo _bar/} = @_; } sub init { my $self = shift; @$self {qw /_baz _qux/} = @_; } #### package C; use A; use B; our @ISA = qw /B C/; sub new {bless {}, shift} sub init { my $self = shift; $self -> B::init(@_[0, 1]); $self -> C::init(@_[2, 3]); }