是否存在某种类型的钩子,当我包含模板并且我可以在其中更改模板的路径时将执行该钩子?
例如
[% INCLUDE test %]
我想将’test’的路径改为’AE / test.tt’或’FR / test.tt’.
我们的想法是更改模板的路径,而不更改包含所在的模板.
解决方法
执行此操作的常规方法是在构造Template对象时使用INCLUDE_PATH参数:
my $tt = Template->new({INCLUDE_PATH => 'AE'});
构建一个新的Template实例并不是什么大问题,所以没有强大的理由不在你处理模板时动态地创建一个新的模板实例,但是,如果你处于一个持久的环境中并且真的需要性能,总是可以选择创建多个:
my %tt; $tt{ae} = Template->new({INCLUDE_PATH => 'AE'}); $tt{fr} = Template->new({INCLUDE_PATH => 'FR'}); # ... code ... code ... code ... $lang = 'ae'; # ... code ... code ... code ... $tt{$lang}->process($template_name);