半角全角ちょっとつけたし
センセーショナルな見出しにしたためか,なんかアクセス数がこれまでにくらべてすごいことになってました。びっくり。何人かトラバなさってましたがトラックバックオフにしてるんで表示されないですね。ごめんなさい。ということで,手動トラバ。
アルファベットについては
use utf8; $str =~ tr/a-zA-Z/a-zA-Z/;とかやってましたよ。普通に。
〜〜〜中略〜〜〜
あー、いや、Encode::JP::H2Zとかあります。んでも、Encode::JP::H2Zってeuc-jpでやってるのですな……。utf8でやらない理由って何かあるのかな?
ご説明ありがとうございます。
「Jcode.pm の h2z は,一度 EUC コードに変換してから全角半角変換してるんで」のくだりはまさに Encode::JP::H2Z についてのことでした(ちなみに今あらためて見てみたら Jcode::_Classic が使う Jcode::H2Z のほうもやっぱり EUC でした)。でも Encode::JP::H2Z って perldoc がそっけなさすぎじゃないですか?
あと,昨日書いた「元の jcode.pl が云々」というのは勘違いでした。
- なんとなく Jcode.pm は歌代氏作の jcode.pl を元に作成されたと勘違い
- jcode.pl が EUC じゃないとハンドルしてくれないのが h2z, z2h だと勘違い(正解は tr)
らへんの勘違いがもとで適当に憶測を書いてしまいました。ということで utf8 でやらない理由は… dan 氏に聞かないとわかりませんが,推測としては,Jcode::_Classic (Encode 使わない版)用の H2Z を Encode::JP::H2Z に流用したからじゃないでしょうか。Jcode::_Classic で EUC にしているのは,旧 Perl と EUC-JP の相性のよさとパフォーマンスを重視した結果ではないかと憶測。
Template-Toolkit であらかじめプラグインをロードしておく
Template-Toolkit では
[% USE foo.bar %] [% foo.bar.sample(test) %]
USE プラグマでプラグインを読み込みますが,アプリ全体で使うプラグインがあらかじめ決まっている場合はいちいちすべてのテンプレートに記述するのも面倒くさいです。
そんなときは,
my $ttc = Template::Context->new(...); $ttc->stash->set('foo.bar', $ttc->plugin('foo.bar', args ...));
すればよいです(↑Template::Context ベースで使っている場合;Template ベースで使っている場合は $tt->context() 等で取得した Template::Context オブジェクトに対して同じようにすればいいはず)。
え,そんな直球な,という感じのコーディングですが,Template::Directive::use() を見たらそんな感じの記述だったんでたぶんいいのでしょう。もっといい手があったり,オライリーの TT 本だとこう書いてあったとかいう情報があればください。