0
我知道如何访问我在Template.pm迷你语言中传递的散列,但是如何在[%PERL%]碎片中访问它?我错过了显而易见的。Template.pm:在[%perl%]中访问传递的散列
%vars = (perldefined => "abc", somehash => { a => 'aa', b => 'bb' });
$template = Template->new({ INTERPOLATE => 1, EVAL_PERL => 1});
,现在一些例子
$in1 = 'a plain variables "[% perldefined %]". a hashcontent variable "[% somehash.a %]". good.bye'."\n";
($template->process(\$in1, \%vars)) or die "bad";
作品。
print "\niterating over Hash in Template code\n";
$in1 = 'a plain variables [% perldefined %]. a hashcontent variable [% FOREACH key IN somehash.keys %] [% key %] => [% somehash.$key %] [% END %] good.bye..'."\n";
($template->process(\$in1, \%vars)) or die "bad";
工程。
print "\nHash print\n";
$in1 = 'a plain variables [% perldefined %]. [% somehash %] ] good.bye.'."\n";
($template->process(\$in1, \%vars)) or die "bad";
的作品。打印哈希引用。
,现在在那里我坚持:
print "\nHash print in Perl subcode, lack of knowledge making iterating impossible \n";
$in1 = 'a plain variables [% perldefined %]. [% PERL %] print somehash [% END %] good.bye.'."\n";
($template->process(\$in1, \%vars)) or warn "huh?";
我需要知道怎么去,这样我可以遍历哈希键和做其他事情。可能显而易见的答案,但我尽我所能想到和失败。
能否请你告诉[你正在试图解决,而不是仅仅你决定该方法的实际问题?( http://meta.stackexchange.com/q/66377/234299)尽管使用Template Toolkit可以做很复杂的事情,但通常最好不要这样做。为什么'[%PERL%]'块而不是简单的[循环](http://template-toolkit.org/docs/manual/Directives.html#section_Loop_Processing)? – ThisSuitIsBlackNot
因为我喜欢perl作为一种语言而不是Template作为一种语言。更少要记住。 –
这正是您在调用模板引擎之前应该尽可能在Perl代码中执行的原因。即使是简单的模板也可能成为调试的痛点;当你开始添加任意的Perl代码时,事情变得更加复杂。 – ThisSuitIsBlackNot