Templateの文字コード
ロジックで扱う文字コードと出力する文字コードが違うなんてことはよくある話。
じゃ何とかならないのかということで、とある人に相談してみたところ、こんなモジュールがあるよってことで教えてくれた。
- Template::Stash::Encode
で、これはテンプレートに渡すパラメータの文字エンコードを変換してくれるらしい。
具体的には以下のように使う。
use strict; use warnings; use Template; use Template::Stash::Encode; my $template_file = "hoge.tt"; my $params = { hoge => "ほげ", }; my $template = Template->new( STASH => Template::Stash::Encode->new(icode => 'utf8', ocode => 'eucjp') ); $template->process( $template_file, $params, ) or die $!;
上のサンプルではロジックではUTF-8だが、埋め込む時にはEUCに変換する例。
注意すべきはテンプレートファイルの文字コードは一切変更してくれないってこと。
いやぁ、便利便利♪