■2005-12-29
* [Perl][メモ] TTの前処理について教えてください
template toolkitでテンプレートファイルを読み込んだときに何らかの処理をしたいのですが、ざっとドキュメントを見渡してもそのためのAPIなりオプションなりが見つかりませんでした。下記のような強引な方法で対処しているのですが、誰かご存じでしたら教えてください。
BEGIN { local $^W = undef; my $orig = \&Template::Provider::_load; *Template::Provider::_load = sub { my ($data, $error) = $orig->(@_); Encode::from_to($data->{text},'shiftjis', 'utf8'); return ($data, $error); }; }
追記:経過報告
* [今月のAcme] あの通貨単位をねらえ
「Perlって変数の頭に$
がつくのがダサイよね」 とはよく言われる話です。もう20回ぐらい言われたり見たりしてませんか? そこでAcme::Currency。 アメリカドル以外も使えるようになりますよ! えっ? そういうことが問題じゃない?
use Acme::Currency qw(\\); \en = '\100'; print \en;
予想されるようにFilter::Simpleで実現されていますが、FILTER_ONLYでcode指定だから文字列には影響を与えないというわけ。ふぅ、これで今年の今月のAcmeはおしまい。
や、本年最後のAcmeはこっちか! Acme
http://www.donzoko.net/cgi-bin/tdiary/20051229.html#p01 Acme 日誌より。 そんな時にはLOAD_TEMPLATES を使うとよいです。 よりは素直に書けるかと思います。
どんぞこ日誌にどんなレスがつくのか興味津々ですが。 http://www.donzoko.net/cgi-bin/tdiary/20051229.html#p01 とりあえず文字コードを変換する程度なら、 でいいような。Jcodeを使うあたりヘタレだなあと思いますが。
LOAD_TEMPLATES とかでは駄目ですか?>TTの前処理
私も最初LOAD_TEMPLATESに目をつけたのですが、<br>試した限りではどうも望みの処理を行うものでは<br>ないようにみえたのです……