$ perl -MAA -e 'AA->mysub()'
AA
BB
####
perl -MBB -e 'AA->mysub()'
The method 'mysub' was not found in the inheritance hierarchy for AA at /usr/local/lib/perl/5.14.2/Class/MOP/Class.pm line 1053.
Class::MOP::Class::__ANON__(Moose::Meta::Class=HASH(0x202fc18), "mysub") called at /usr/local/lib/perl/5.14.2/Class/MOP/Class.pm line 1098
Class::MOP::Class::add_around_method_modifier(Moose::Meta::Class=HASH(0x202fc18), "mysub", CODE(0x202b7b0)) called at /usr/local/lib/perl/5.14.2/Moose/Util.pm line 267
Moose::Util::add_method_modifier(Moose::Meta::Class=HASH(0x202fc18), "around", ARRAY(0x1edb158)) called at /usr/local/lib/perl/5.14.2/Moose.pm line 93
Moose::around(undef, "mysub") called at /usr/local/lib/perl/5.14.2/Moose/Exporter.pm line 409
Moose::around("mysub", CODE(0x202b7b0)) called at AA.pm line 11
require AA.pm called at CC.pm line 3
CC::BEGIN() called at AA.pm line 0
eval {...} called at AA.pm line 0
require CC.pm called at BB.pm line 4
BB::BEGIN() called at AA.pm line 0
eval {...} called at AA.pm line 0
require BB.pm called at -e line 0
main::BEGIN() called at AA.pm line 0
eval {...} called at AA.pm line 0
Compilation failed in require at CC.pm line 3.
BEGIN failed--compilation aborted at CC.pm line 3.
Compilation failed in require at BB.pm line 4.
BEGIN failed--compilation aborted at BB.pm line 4.
Compilation failed in require.
BEGIN failed--compilation aborted.
####
package AA;
use utf8;
use Moose;
use CC;
extends 'BB';
around mysub => sub {
print "AA\n";
shift->();
};
####
package BB;
use utf8;
use Moose;
use CC;
sub mysub { print "BB\n";}
####
package CC;
use AA;
1;
####
$ perl -MBB -e 'AA->mysub()'
AA
BB
####
package AA;
use utf8;
use CC;
use parent 'BB';
sub mysub {
print "AA\n";
shift->SUPER::mysub();
};
####
package BB;
use utf8;
use CC;
sub mysub { print "BB\n";}
1;
####
package CC;
use AA;
1;