##
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]);
}