提供されている例の Catalyst ディスパッチ プロセスを実行するのは、やり過ぎのように思えます。ceil 関数を処理するテンプレート プラグインを作成するか、テンプレートUSE var = Class(module)
コンストラクトを使用して、必要なことを行うのは非常に簡単です。
どちらも最終的に多かれ少なかれ同じ効果を生み出します。
=== Template/Plugin/MyFunc.pm ===
package Template::Plugin::MyFunc;
use base 'Template::Plugin';
our $VERSION = 0.01;
use strict;
use warnings;
sub new {
my ($class, $context) = @_;
bless {
_CONTEXT => $context,
}, $class;
}
sub ceil {
my ($self, $param) = @_;
return ceil($param)
}
sub other_func {
... etc
}
1;
=== some template ===
[% USE MyFunc %]
<td>[% MyFunc.ceil(some_param) %]</td>
ceil()
私はそれを調査していませんが、 などの機能を実行するためのテンプレート プラグインfloor()
が CPAN にすでに存在していなかったら驚くでしょう。