2006 年 3 月 11 日 23 時 59 分

IO レイヤに代わるもの


このアーカイブは同期化されません。 mixi の日記が更新されても、このアーカイブには反映されません。


Perl 5.8 では、以下のように指定すると、
出力時に、内部表現から shift_jis に変換してくれる。

binmode STDOUT, ":encoding(shift_jis)";

Perl 5.8 の文字列は、utf-8 フラグによっては、
ただのバイト集合ではなく、「文字」列となる場合がある。
この場合、length などが返すのは文字数になる。
しかし、Perl 5.6 では、文字列はただのバイト集合だ。
この場合 length などが返すのはバイト数である。

このあたりの差異があることを考えると、
Perl 5.8 の暗黙の文字列処理を使うことはできない。

だからといって、コード変換クラスを作り、
メソッド呼びまくりでは、
既存のコードに対して大きな変更を余儀なくされる。

となると、Perl 5.6 で同様のことをするには、
ファイルハンドルに対する tie を使うしかなさそうだ。



Copyright (c) 1994-2007 Project Loafer. All rights reserved.