perl - Template Toolkit 勉強
HTML::Templateみたいな。HTML用だけではなく汎用的に使える。設定次第では出力時にhtml用にescapeとかもしてくれる。
- http://e8y.net/mag/008-template/
- perldoc Template
CGI::ApplicationではPlugin::TTもある。
use Tempalte; my $tt = Template->new(); $tt->process('path.tt', { key => $value } , \my $out) or die; print $out;
これでpath.tt内のkeyが$valueになる。
templateの書き方
- GET
変数の取得
[% key %] # key => $valueになる [% key -%] # key => $valueになる / 余分な改行を抑える
- %はループを使うときに便利。
- SET
変数の設定
[% foo = 'hoge' %] [% bar = foo %] # barに変数foo(今は'hoge')を代入 [% baz = "$bar" %] # ""で囲ってperlの変数風にも書ける
template中で、他のtemplateを読む
INCLUDEかWRAPPERを使う。WRAPPERのがシンプル。
[% content | indent(' ') %]
とすると、contentの部分にtemplateを埋め込むときに
先頭に空白を入れてインデントできる。
- parent.tt
<body> [% content %] </body>
- wrapper.tt
[% WRAPPER parent.tt %] hogehoge [% END %]
これで
$tt->process('wrapper.tt');
を実行する。processで指定するのはparentのほうじゃなくてwrapperのほう。
ループ
FORとかで。ハッシュを渡してたらkey, valueでアクセス出来る。
[% FOR i in hashref %] [% i.key %] [% i.value %] [% END %]
- loop オブジェクト
loop.size、loop.countとかで色々取得できる。