Catalystの拡張は$cだけじゃないYO!
良いサンプル
MD5の例をソース見て解説すると、
package Catalyst::Plugin::Upload::MD5; use strict; use Catalyst::Request::Upload; use Digest::MD5; our $VERSION = '0.01'; { package Catalyst::Request::Upload; sub md5sum { my $self = shift; unless ( $self->{md5sum} ) { $self->{md5sum} = Digest::MD5->new->addfile( $self->fh )->hexdigest; } return $self->{md5sum}; } } 1;
って感じでCatalystの他のモジュールのpackageを指定してメソッドを追加するだけ。
ここの例だとCatalyst::Request::Uploadに対してメソッドの追加をする。
Pluginなので、setup_pluginsで当然ロードしてくれる。
基本@ISAにぶっこむだけですけど、特に追加するメソッドは無く、この定義のみ読まれるので、新たな機能を追加する事が可能ですよーって話。
これでEngineだとかDispacherとかにちょい機能追加ってのも可能ですね。