Catalyst::Plugin のベストプラクティス
http://d.hatena.ne.jp/tokuhirom/20080603/1212499955
にも書いてあるように、Catalyst::Plugin::* 以下のクラスに書いてあるメソッドはすべて $c から呼べるようになります。Catalyst のキモイ面のひとつですが、回避方法はあります。
package Catalyst::Plugin::Hoge; use Moge; sub func1() { Moge->func1(); } sub func2() { Moge->func2(); } sub func3() { Moge->func3(); } 1; package Moge; sub func1() { my $self = shift; } sub func2() { my $self = shift; } sub func3() { my $self = shift; } sub func4() { } sub _func5() { } sub _func6() { } 1;
上記のように委譲を使えば、必要なメソッドだけ $c 経由で呼べるようになります。