package Foo;
sub _init { shift->{foo} = 1 }
sub new {
my $class = shift;
my $self = bless {}, $class;
_init($self);
$self;
}
package Bar;
use base qw(Foo);
sub _init { shift->{bar} = 2 }
sub new {
my $class = shift;
my $self = $class->SUPER::new;
_init($self);
$self;
}
####
package Foo;
sub _init { shift->{foo} = 1 }
sub new {
my $class = shift;
my $self = bless {}, $class;
$self->Foo::_init;
$self;
}
package Bar;
use base qw(Foo);
sub _init { shift->{bar} = 2 }
sub new {
my $class = shift;
my $self = $class->SUPER::new;
$self->Bar::_init;
$self;
}
####
package main;
use Data::Dumper;
print Dumper(Bar->new);
__END__
$VAR1 = bless( {
'bar' => 2,
'foo' => 1
}, 'Bar' );