ns1-watanabeの日記

 | 

2008-04-15

メモ 11:44

perl 5.8.* でUnicodeを扱う

use utf8;
use open IO  => ":utf8";

「use utf8;」以降のperlコードがutf8であることを伝える

(当然、実際にunicodeかどうかは別)

変数名などに日本語が使えたりもする

リテラルunicodeとして扱ってくれる


「use open IO => ":utf8";」は

use open IN  => ":utf8";
use open OUT  => ":utf8";

をまとめて書いたもので

「use open IN => ":utf8";」は<IN>がutf8であることを伝える

「use open OUT => ":utf8";」は<OUT>をutf8で行うことを伝える


perlの内部はUnicodeなのだが専用のフォーマットがあり(unicodフラグ)、たとえ<IN>の元がUnicodeであろうと「use open IN => ":utf8";」を使わないと、正規表現などでうまくいかないことがある

特に文字数などをちゃんと一文字として数えてくれる

 |