一応、>>180の単純化した例を用意しました。、
以下の例では、Aで生成したオブジェクトを使ってfというメソッドを呼び出していますが、
素の状態ではB、D、Cの順に探索するのでDのメソッドが呼び出されます。
C::で修飾してもfの中に内部メソッドの呼び出しがあるので、意図とは反して
Dの_pメソッドが呼び出されてしまいます。
これを正しく呼び分けられるようにしたいというのが質問の意図です。

package A; @ISA = qw(B C);

sub new { bless {} }

package B; @ISA = 'D';

package C; @ISA = 'D';

sub f { $_[0]->_p }
sub _p { print "I like C.n" }

package D;

sub f { $_[0]->_p }
sub _p { print "I like D.\n" }

###

package main;

$o = A->new();
$o->f; # I like D
$o->C::f; # I like D (not C)