0

问题的简短版本:

有什么方法可以从提供给流程调用的模板中获取 $var-hash(不是它的子变量)

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 转换为哈希树。不同的(独立的)模板适用于该树的不同部分(不同级别)。子模板收集有关该树部分的一些附加信息。现在我想在这个模板中使用子模板,但是一些模板在树的一个节点上工作

例子

A
+-Bs
  +- b1
     +- i
     +- c
  +- b2
     +- i
     +- c
  +- b3
     +- i
     +- c

这棵树被转换成一个散列并直接作为 $vars 给出模板 TA 工作整个散列(模板看到变量 Bs) 模板 TB 在 B 节点上工作并且只得到这个节点(模板看到 i anc c)

我想写一个 BLOCK,它需要一个 B 节点并对其进行操作。这个块应该可以从 TA 和 TB 使用,所以我正在寻找一种在不更改生成器脚本的情况下获得完整环境的方法。

4

1 回答 1

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 %]
于 2013-04-30T12:40:02.047 回答