作者: 閑舎
日時: 2002/7/07(14:26)
藤岡和夫 <kazuf@...> さん writes.

> > 単純にbinmodeかましてやればいいんじゃないかってことはないですか?
> 
>  どうもありがとうございます。
> 
>  テキスト処理なので行単位での読み込みをするようにスクリプトを書いていま
> す。binmodeだとそういうわけにもいきませんから。最終的には単語を抽出して
> カウントするのですけど、前処理としてパターンマッチでメールのヘッダ部分を
> 削除するスクリプトでそういうトラブルに・・・\nを検出して読み込み量を制御
> しながらできないわけではないでしょうけど・・・

read で 255 バイトずつ読みこみ、改行で split して @lines にたまった各行
に関してそれぞれ処理していくといいのではないか、と思いますが(^^;。

open(IN, shift);
binmode(IN);

$buf0 = "";
while (read(IN, $buf, 255)) {
  $buf =~ s/\x1a//g;
  $buf = "$buf0$buf";
  @lines = split("\n", $buf);
  $buf0 = $lines[@lines - 1];
  for ($i = 0; $i < @lines - 1; $i++) {
    print "$lines[$i]\n"; # 本当はここでいろいろ処理。
  } 
}
if ($buf0 ne "") {
  print "$buf0\n"; # 最終行処理
}

--
本田博通(閑舎)
Hiromichi Honda <raku@...>