PerlとRuby

普段スクリプトcgi はほとんど ruby で書くのだけど,最近 perl でも書く機会が増えた。MovableTypeプラグインに手を出したとか,YAPC で刺激を受けたとかいろいろ理由はある。ただやっぱり文字コード周りでは混乱することが多かった。確か Encode.pm のドキュメントか何かで小飼さんが「Jcode でできることは全て Encode でできる」と書いていたので,それ以来 Encode.pm を使っているんだけど,例の 'Wide character' 云々の警告メッセージを取りきれない。
ところが先日「まるごとPerl! Vol.1」を購入して,この中の小飼さんの「まるごと Encode」という解説記事を読んで,かなり頭の中がすっきり。オレ的キモは「Perl の文字列は UTF-8 エンコードされているけど,あくまでも'内部形式'なのでそのまま出力してはいけない。UTF-8 の文字列が欲しいときは,UTF-8 に'エンコード'しないといけない」という理解でした。小飼さんは YAPC のときも「まず decode。次に encode」と強調してたっけ。これも「decode して perl 内部文字列にする」と覚えていないと混乱する(encode すると各種エンコーディングの文字列になる)。

とりあえず手元のスクリプトの警告メッセージも一掃できたし。よかったよかった。

まるごとPerl! Vol.1

まるごとPerl! Vol.1

ruby の場合は内部文字コードというものが存在しないので,変なことをやるともっと大変なことになります。自分なりに utf-8 に統一と思っても,外部からどんなエンコーディングで飛んでくるか分からないし。あと(perl も同じですけど)外部ライブラリが期待しているエンコーディングが何かよく分からないのも困りますね。