HTML::Templateでutf-8テンプレートの文字化け
少しハマったので記録しておきます。
PerlのHTML::Templateを使って、
utf-8のファイルを読み込んで表示すると、
日本語が文字化けしました。
以下の記述だと文字化けを起こします。
my $tmpl = HTML::Template->new(filename => $filename);
解決策としては、以下のように記述します。
my $tmpl; open (my $fh, "<:utf8", $filename ) or die "Couldn't open template file: $!\n"; $tmpl = HTML::Template->new( filehandle => *$fh ); close($fh);
なんか、ものすごく面倒ですね。
他のモジュールも触ってみた方が良さそう。
また使う時ようにサブルーチン化
sub get_template { my $filename = shift; my $tmpl; open (my $fh, "<:utf8", $filename ) or die "Couldn't open template file: $!\n"; $tmpl = HTML::Template->new( filehandle => *$fh ); close($fh); return $tmpl; } my $tmpl = &get_template($filename);
ref:
shunkoh hat so gedacht