Summary? You can do it! I wrote a test script to try this: package A; sub a { print "A->a\n" } package B; use Class::C3; @B::ISA = ('A'); sub a { print "B->a\n"; $_[0]->next::method(); } At this point, everything is fine. B->a prints B->a, A->a. Now, let's add NEXT to the mix: package C; use NEXT; @C::ISA = ('A'); sub a { print "C->a\n"; $_[0]->NEXT::a; } package D; use NEXT; @D::ISA = ('B', 'C');