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
この記事に言及しているこのブログ内の記事
