perl のテンプレートライブラリはもっぱら HTML::Template を使ってるのだけど、UTF-8等のテンプレートファイルを読みこませると文字化けすることがある。PerlIO のレイヤを指定してテンプレートファイルを読みこまないのが原因。
あらかじめ自分で open したもののファイルハンドルを渡すことで簡単には回避できるけど、そのテンプレートファイルの中で TMPL_INCLUDE が実行されている場合は、その部分が文字化けする。
これに対するパッチは2種類ほど見かけたけど、
に投稿されている HTML-Template-2.9-utf8.patch がいい感じ。パッチを当てておいて、
my $tpl = HTML::Template->new(filename=>'hoge.tpl', binmode=>':utf8');
のように使う。次の版から merge してくれんかの。
2011.6.6 追記 HTML::Template 2.10 にパッチが取り入れられるようです