新しいblogに移行しました

新ブログ "All Yout Bugs Are Belong To Ass" に移行しました!

2010-07-08

[Perl]Catalystのフィルタプラグインを書く

フィルタプラグイン

ここで云う「フィルタプラグイン」ってのは、従来の出力結果を書き換えるプラグインのことです。まんまですね。
で、肝となるのは以下3点。

1. Pluginなのでuse Moose::Role
2. フィルタなのでfinalizeで色々するけど、基本はoverride finalize
3. finalizeは$c->next::method( @_ )をreturnする

例えば、水を汁に置き換える

但し、body内のデータはUTF-8であることが前提です。
package WaterToJuice;
use Moose::Role;

override finalize => sub {
    my $c = shift;
    $c->res->{ body } =~ s/水/汁/g;
    return $c->next::method( @_ );
};

1;
__END__

0 件のコメント: