Still problems
- 'Base' was called twice.
- This can be fixed with NEXT::DISTINCT
*
package Base;
use NEXT;
sub new {
my ($class) = @_; return {}, $class;
}
sub methodA {
my ($self) = @_; $self->NEXT::DISTINCT::methodA(); print 'Hello from base' . "\n";
}
package ChildA; use NEXT; use base 'Base';
sub methodA {
my ($self) = @_; $self->NEXT::DISTINCT::methodA(); print 'Hello from childA' . "\n";
}
package ChildB; use NEXT; use base 'Base';
sub methodA {
my ($self) = @_; $self->NEXT::DISTINCT::methodA(); print 'Hello from childB' . "\n";
}
package ChildC; use NEXT; use base qw(ChildA ChildB);
sub methodA {
my ($self) = @_; $self->NEXT::DISTINCT::methodA(); print 'Hello from childC' . "\n";
}
package main;
my $child = ChildC->new;
$child->methodA();
- OUTPUT:
Hello from childB Hello from base Hello from childA Hello from childC