对所提供的示例进行 Catalyst 调度过程似乎有点过头了。通过创建一个模板插件来处理 ceil 函数,或者通过 TemplateUSE 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>
我还没有研究过它,但是如果没有模板插件来执行诸如CPAN 之类的功能ceil(),我会感到惊讶。floor()