Template::Toolkit变量处理

Sly*_*Sly 5 perl templates toolkit

我正在使用 perl 中的 TT,并尝试插入模板并处理变量,该变量本身包含 TT 指令。

所以,在脚本中我写的是这样的:

$var{descr} = "[% pid = 1; INSERT plink.par %]";
Run Code Online (Sandbox Code Playgroud)

然后在 TT 模板中(收到 \%var):

[% BLOCK parsedDescr %]
[% descr %]
[% END %]
<p>[% INCLUDE parsedDescr %]
Run Code Online (Sandbox Code Playgroud)

我期望 pid 变量设置为“1”,并插入 plink.par 文件。但相反,我在 html 页面上得到了变量 descr 的确切内容:

[% pid = 1; INSERT plink.par %]
Run Code Online (Sandbox Code Playgroud)

即,该变量未被 TT 处理。

如何让 TT 处理其内容?

Eug*_*ash 5

您可以使用eval 过滤器

<p>[% descr | eval %]
Run Code Online (Sandbox Code Playgroud)

从链接的联机帮助页:

eval 过滤器将块评估为模板文本,处理嵌入其中的任何指令。这允许模板变量包含模板片段,或者提供某种方法从外部源(例如数据库)返回模板片段,然后可以根据需要在模板中进行处理。