$ 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;