HTML::Templateでテンプレートを読み込むときUTF8フラグ付ける
昔作ったPerlスクリプトをメンテナンスしてたらこんなコードがあったよ。
use utf8; use HTML::Template; open $fh, "<:utf8", 'hoge.tmpl' or die $!; my $t = HTML::Template->new ( filehandle => $fh, ); close $fh;
これは、HTML::Templateを使いたいのだけれども、テンプレートに差し込む文字列がUTF8フラグ付きなんで(XML周り扱うとUTF8フラグ付いていた方がいいときあるよね)、テンプレートもUTF8フラグ付で読み込んでおきたいっていう話なんだけれども。
こんなのにいちいちファイルハンドル渡して読み込むのってスマートじゃないってことでこんな風に。
use utf8;
use HTML::Template;
my $t = HTML::Template->new (
filename => 'hoge.tmpl',
filter => sub { utf8::decode( ${ shift() } ); },
);
いかにもPerlが嫌いになりそうなコードなので、filterのところを書きなおすと、
filter => sub { my $r = shift; utf8::decode( $$r ); },
とか、
filter => sub { my $r = shift; $$r = Encode::decode_utf8( $$r ); },
とか書けるよ。
以下を参考にしたよ。
- Perl 5.8.x Unicode関連 [www.rwds.net]
- TTの前処理 - Charsbar::Note [d.hatena.ne.jp]
- Perlで+を使うと幸せになれるよ (*´Д`)ノ - (゚∀゚)o彡 sasata299's blog [blog.livedoor.jp]
トラックバック
この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/19018/49198635
この記事へのトラックバック一覧です: HTML::Templateでテンプレートを読み込むときUTF8フラグ付ける:






![森田 創: WEB+DB PRESS 総集編 [Vol.1~60]](http://ecx.images-amazon.com/images/I/51aE58LxWlL._SL75_.jpg)
















![: 電子ルーペ ViewPe[ビューペ] 3R-MSV35 マイクロスコープ デジタル顕微鏡 高機能 低価格 読書 植物 研究 肌チェック](http://ecx.images-amazon.com/images/I/41erkiQgAsL._SL75_.jpg)





![: Optimus bright [docomo L-07C] 対応 予備バッテリー 1500mAh BL-44JN](http://ecx.images-amazon.com/images/I/41gjqsDjq%2BL._SL75_.jpg)










![: パンツの穴 [DVD]](http://ecx.images-amazon.com/images/I/21R9SEY1HPL._SL75_.jpg)

















