Template Toolkitを使ってみる

お仕事でちょっと使うので今更ながらPerlTemplate Toolkitを試してみる。
環境はWindowsXPSP2、ActivePerl5.8.819
CAPNから

  • Template-Toolkit-2.15.tar.gz

をもってきて解凍。libの配下をそのまま/perl/site/lib配下に放り込む。
ネットの情報を真似てサンプルを書いてみる。
template_toolkit_practice.pl

use strict;
use warnings;
use Template;

my $template = Template->new();
my $tt_file = 'tt_practice.tt';

my $params = {
	date => "今日",
	name => "redrisefirm",
	action => "よく寝てる・・・",
	items => ["眠気","ダルさ","不安"],
	info => {
		sex => '陽性',
		old => -45,
		blood => '+型',
	}
};

$template->process(
	$tt_file,
	$params,
) or die $!;

でコレ用のテンプレートはこんな感じ
tt_practice.tt

<html>
<head>
<title>Template Toolkit Practice</title>
</head>
<body>

<h1>まずは基本</h1>
[% name %]さんは[% date %]も[% action %]

<hr>
<h1>配列だってお茶の子サイサイ</h1>
[% name %]さんはこんなものを持っています。<br>
<ol>
[% FOREACH item IN items %]
	<li>[% item %]</li>
[% END %]
</ol>

<hr>
<h1>ハッシュはどうなる?</h1>
[% name %]さんの血液型は[% info.blood %]です。
<h2>ついでにIFも試してみよう。</h2>
[% name %]さんの年齢は[% info.old %]歳です。
[% IF info.old >= 0 %]
	それって本当?
[% ELSE %]
	ウソをつけ、ウソを
[% END %]
<h1>ハッシュループも余裕ですなw</h1>
<ul>
[% FOREACH word IN info.keys %]
	<li>[% word %]:[% info.$word %]</li>
[% END %]
</ul>
</body>
</html>

出力先を特に指定してないのでSTDOUTに出る。リダイレクトでHTMLに出力してみた。

perl -w template_toolkit_practice.pl > tmp.html

でそれをブラウザで表示してみて確認。おぉ、ちゃんと出てる。すげぇ〜