dune <FZH01112@...> さん wrote.
> -o kekka.txt でも >kekka.txt でも同じですが、出力の行末が
> \x0D\x0D\x0A になってます。
ほんとに。エンバグですね。直しました。
> 以前のバージョンでは正常なので、binmode とか MAC の改行コー
> ドを意識した今回の修正で、改行コードに依存したコードを書いて
> しまったのではないでしょうか。例えば行単位の処理のはずが、改
> 行を認識できずにファイル全体を処理しようとしてるとか。
改めてどこの処理に時間を食っているかチェックしたところ、
open(IN, "$FILE") or die;
binmode(IN);
read(IN, $LINE, 99999999);
close(IN);
の部分でした。私の認識だと、99999999 Bytes を限度に読みこもうとし、デー
タがなくなったら read を止める、と捉えていましたが、どうやら、本当に
99999999 Bytes までディスク領域を読むみたいで(^^;。ここを
open(IN, "$FILE") or die;
binmode(IN);
$LINE = $buff = "";
while (read(IN, $buff, 8192)) {
$LINE .= $buff;
}
read(IN, $LINE, 99999999);
close(IN);
に代えると、さっと終るようです(ノートでなく、VMware 上の WinXP での確
認)。99999999 にしたのは、将来的にデータベースのサイズが大きくなった時、
ループが少ないから、この方が速いだろうとの考えでしたが、完全に逆だったよ
うです(^^;。
もう少ししたら、直しを入れた Ver.0.64 をアップします。お騒がせしました。
--
本田博通(閑舎)
テキストとスクリプトの http://rakunet.org/TSNET/