私は、渡されたハッシュに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)テンプレートツールキットでは本当に複雑なことができますが、通常はそうではありません。単純な[ループ](http://template-toolkit.org/docs/manual/Directives.html#section_Loop_Processing)の代わりに '[%PERL%]'ブロックを使用するのはなぜですか? – ThisSuitIsBlackNot
私は言語としてテンプレートの代わりに言語としてperlが好きです。覚えておくことも少なくなります。 –
これは、テンプレートエンジンを起動する前に、できるだけPerlコード*で行うべき理由です。単純なテンプレートでさえ、デバッグするのに苦労することがあります。任意のPerlコードを追加すると、はるかに複雑になります。 – ThisSuitIsBlackNot