有没有办法从给出进程调用的模板中获取$ var-hash(而不是它的subvars)
my $tt = Template->new({
VARIABLES => {
version => 3.14,
release => 'Sahara',
},
});
my $vars = {
serial_no => 271828,
i => 0
c => 1
};
$tt->process('myfile', $vars);
从模板的角度来看,serial_no,i和c是全局变量,但我也希望通过父哈希访问它。
背景是我们将xml转移到哈希树中。不同(独立)模板适用于该树的不同部分(在不同级别上)。子模板收集有关该树部分的一些其他信息。 现在我想在模板中使用subtemplate,但是一些模板在树的一个节点上工作
例如
A
+-Bs
+- b1
+- i
+- c
+- b2
+- i
+- c
+- b3
+- i
+- c
此树转换为哈希值,并直接以$ vars形式给出 模板TA工作整个哈希(模板看到变量Bs) 模板TB在B节点上工作,只获取此节点(模板看到我和c)
我想写一个BLOCK,它接受一个B-Node并对其进行操作。 该块应该可以从TA和TB中使用,因此我可以在不改变生成器脚本的情况下搜索完整的环境。
答案 0 :(得分:3)
使用[% PERL %]阻止或使用Template::Plugin::Stash
测试
[% USE Stash %]
[% USE Dumper Indent = 1%]
<pre>[% Dumper.dump_html( Stash.stash() ) %]</pre>
未测试
[% PERL %]
$stash->set( iamthestash => $stash ); ## or call your tree thing
[% END %]