作者: 藤岡和夫
日時: 2006/5/07(09:20)
On Sat, 06 May 2006 23:22:01 +0900
KIMURA Koichi <kbk@...> さんwrote:

> 一日遅れですが、藤岡さんの更新日記から。
> 
> > 謎、その一。上記の「open OUT, ">:utf8", "out.txt";」の行を
> > 次の2行に変えると、なぜかONにはならない。
> >
> > binmode OUT, ":utf8";
> > open OUT, ">out.txt";
> 
> use warnigns していれば謎はすぐに解けます。

 毎度コメントありがとうございます。本当ですね。謎が解決しました。位置に
問題があるかなとはぼんやりとは思ったのですが、確認していませんでした(^^;)

> このことは、たとえば文字列にlength()を適用した結果を
> use utf8 したときと、use bytes したときでどう変わるかを
> 見ればわかります(このプラグマはレキシカルスコープを持つので
> ブロックやサブルーチン単位でon/offすることができます)。

 一応、スクリプトでは、use utf8した場合としない場合で、length()を測定し
ています(^^)

> 正規表現で確かめたいのなら、量指定子をマルチバイト文字
> に対して付加してみてどのようなバイト列にマッチするかを
> 見ればよろしいかと。

 そうですね。現象論だけでPerlを見ている立場からだと、いろいろと確認しな
いと安心できないですね。アプリケーションを具体的に作ってみるとどう書かな
くてはならないか問題点が見えてきます。昨日は初めてDBIモジュールを使わせ
てもらって、SQLite(DBD::SQLite)を使うアプリケーションを作り始めたのです
が、今のところ、byte指向になりそうですね。モジュールの問題なのかどうかも
わかりにくいです。何かうまくいかないと、うまくいく方向に流れてしまう
(^^;)byte指向になって問題なのは、UTF-8関連の正規表現を活かせないというこ
とぐらいですかね。それ以外に何か問題があるのでしょうか。UTF-8を使えば書
くのは楽だし、問題がないならその方向で進みたいと思ったり・・・

> > 注意]上記のスクリプトはUTF-8に変換して保存してテストしなければ
> > 意味がない。最近のPerl(v5.8.7以降かな?)はUTF-8テキストにBOMが
> > 付いていても読めるようになった。
> 
> perlunicode をみると、5.8.4→5.8.5で以下のようなエントリが
> 追加されています。多分、この辺で対応されたのではないでしょうか。
> #perldeltaには記載なし

 あっそうですか。ご確認ありがとうございます。僕は手持ちの印刷した
ActivePerlのperlunicodeのマニュアルを見て確認しました。Build 810(5.8.4)
にはなくて、Build 813(5.8.7)にはありましたので、間の可能性があるので?を
付けていました(^^)ここで言っても仕方がないけど(^^;)マニュアルにもバージョ
ンを表示してもらうと助かりますね。今は印刷すると手書きで、buildとversion
を書いています。ActivePerlでは5.8.5は出ていませんね。5.8系列はアクティブ
にバージョンアップされているし、5.10に向けてたのしみです。

藤岡 和夫
kazuf@...
TS Networkのために http://homepage1.nifty.com/kazuf/