[perl][多重継承][Class::ISA]

package My;
use strict;

sub hoge {
    print 'My'. "\n";
}

package My::A;
use strict;
use base 'My';

sub hoge {
    print 'My A'. "\n";
}

package My::B;
use strict;
use base 'My';

sub hoge {
    print 'My B'. "\n";
}

package My::Common;
use strict;
use warnings;

sub hoge {
    print 'My Common'. "\n";
}

package My::C;
use strict;
use warnings;
use base qw(My::B My::Common); 

sub hoge {
    my $self = shift;
    $self->SUPER::hoge;
    print 'My C' . "\n";
}

package main;
use strict;
use Class::ISA;

My::C->hoge;

print "path is:  ", join(", ", Class::ISA::super_path('My::C')), "\n";

結果

My B
My C
path is:  My::B, My, My::Common

http://search.cpan.org/perldoc?Class::ISA