package FloorWax;
sub new {
my $class = shift;
bless {FW_massage(@_)}, $class;
}
package DessertTopping;
sub new {
my $class = shift;
bless {DT_massage(@_)}, $class;
}
####
package FloorToppingDessertWax;
our @ISA = qw[FloorWax DessertTopping];
sub new {
my $class = shift;
####
package FloorWax;
sub new {bless {}, shift}
sub init {
my $self = shift;
my %arg = FW_massage @_;
@$self{keys %arg} = values %arg;
$self
}
package DessertTopping;
sub new {bless {}, shift}
sub init {
my $self = shift;
my %arg = DT_massage @_;
@$self{keys %arg} = values %arg;
$self
}
####
package FloorToppingDessertWax;
our @ISA = qw[FloorWax DessertTopping];
sub new {bless {}, shift}
sub init {
my $self = shift;
foreach my $class (@ISA) {
my $init = "${class}::init";
$self->$init(@_) if $self->can($init);
}
$self;
}