2009年02月10日

utfフラグの挙動

UTFで保存しているソースコードで、
use utf8;
とするとそのスコープ中で書かれた非ASCII文字にはUTFフラグがつきます。

例:
use utf8;
my $str = 'ほげほげ';

↑の$strに入っている文字列は、UTFフラグつき。

この場合、requireで外部ソースを読み込んだ場合、読み込むファイルでも use utf8;が必要です。


例:読み込まれるファイル(hoge.pl)

use utf8;
sub hogehoge{
my $str = "文字コード";
return($str);
}
1;



読み込むファイル(sample.pl)

use utf8;
require 'hoge.pl';
my $string = 'UTF8な';
## ↑これはフラグつき
my $exfile = &hogehoge;
## ↑これもフラグつき
$string .= $exfile;
## ↑これもフラグつき



use utf8されていない(そして中で非ASCII文字を扱う)ライブラリ等をrequireする場合は、ライブラリ側でuse utf8するか、返ってきた結果を利用する前にEncode::decodeする必要がある……みたいな感じ。

いや、1時間ほど嵌りました


posted by 鯖缶 at 16:05 | Comment(0) | TrackBack(0) | ただいま開発中 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。