HTML::Template から Template Toolkit に乗り換える準備
2008-02-21-2
[Programming]
日本の Perl Geek 達からだいたい5年遅れで新しいもの
(つか、すでに枯れたもの)にチャレンジしている私です。
さて、Perl のテンプレートエンジンとして
今までは HTML::Template を使っていました。
シンプルなのが良いのですが、
自由度がちょっと低いので最近は閉塞感を感じていました。
ということで Template Toolkit を使ってみようかと。
perldoc を見ながらちょこっといじってみたら、
HTML::Template でできることはカバーでき、
かつ、
「やりたいと思っているんだけど HTML::Template だと
面倒そうな処理」が簡単に実装できそうなので、
非常に良い感じ。
以下、HTML::Template っぽいことをやるサンプルコード:
実行結果:
なお、業界では常識ですが、TKSK は高須クリニックの略です。
ゆえに「Yes!」、ということで。
ref. 竹迫さんはtkskなのか?? - snow-bellの日記
http://d.hatena.ne.jp/snow-bell/20080218/1203274360
(つか、すでに枯れたもの)にチャレンジしている私です。
さて、Perl のテンプレートエンジンとして
今までは HTML::Template を使っていました。
シンプルなのが良いのですが、
自由度がちょっと低いので最近は閉塞感を感じていました。
ということで Template Toolkit を使ってみようかと。
perldoc を見ながらちょこっといじってみたら、
HTML::Template でできることはカバーでき、
かつ、
「やりたいと思っているんだけど HTML::Template だと
面倒そうな処理」が簡単に実装できそうなので、
非常に良い感じ。
以下、HTML::Template っぽいことをやるサンプルコード:
#!/usr/bin/perl use strict; use warnings; use Template; my $tt = Template->new({ # INCLUDE_PATH => 'tpl', # OUTPUT_PATH => 'out', # EVAL_PERL => 1, }) || die $Template::ERROR, "\n"; my $str = "TKSK"; my $list_ref = [{id => 1, name => "you"}, {id => 20, name => "us"}, {id => 3, name => "me"},]; my $hash_ref = {yes => "Yes!!!", no => "Noooooo!"}; my $vars = { str => $str, lr => $list_ref, hr => $hash_ref, }; #$tt->process("a.txt", $vars, "a.html") || die $tt->error(), "\n"; #$tt->process(\*DATA, $vars, "a.html") || die $tt->error(), "\n"; $tt->process(\*DATA, $vars) || die $tt->error(), "\n"; __END__ [% IF str %][% hr.yes %] [% str %][% ELSE %][% hr.no %][% END %] [% FOR lr %][% id %]/[% name %][% IF !loop.last() %],[% END %][% END %] [% FOR v IN lr.sort('name') %]([% v.id %]/[% v.name %])[% END %] [% FOR v IN lr.nsort('id').reverse %]([% v.id %]/[% v.name %])[% END %]
実行結果:
Yes!!! TKSK 1/you,20/us,3/me (3/me)(20/us)(1/you) (20/us)(3/me)(1/you)
なお、業界では常識ですが、TKSK は高須クリニックの略です。
ゆえに「Yes!」、ということで。
ref. 竹迫さんはtkskなのか?? - snow-bellの日記
http://d.hatena.ne.jp/snow-bell/20080218/1203274360
この記事に言及しているこのブログ内の記事