• ベストアンサー

Perlでテキストファイルの処理方法

Perlでファイル入力は 下記のように記述します open (IN,"myInput.txt"); $lineno = -1; while (<IN>) {  $lineno = $lineno + 1;  @lines_org[$lineno] = $_;  #print lines_org[$lineno];  #print $_,"\n";  } これで一行づつ入力できます ここで質問したいのは 入力ファイルに改行コードがないため 処理できないと思うのですが 一行づつ入力ではなく、1文字づつ入力する 入力方法はPerlにはないのでしょうか ちなみに入力ファイルは数メガある大きなファイル です よろしくおねがいします

質問者が選んだベストアンサー

  • ベストアンサー
  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.1

open (IN,"myInput.txt"); の後に binmode(IN); とバイナリーモードにして、 while ( read(IN,$buf,1) ){ とかやれば、$bufに1文字入ると思われます。 今、Perlの実行環境が無いんで確認できないので、自身なしにします。

ppmi
質問者

お礼

ありがとうございました 早速、試してみます

ppmi
質問者

補足

おかげさまで、ずいぶん進展しました >実行環境が無い ということは最近は使ってないわけですね >while ( read(IN,$buf,1) ){ こうした記述が間違いなく書けてすごいな と思いました

その他の回答 (1)

  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.2

> read(IN,$buf,1) これは1文字づつではなく1バイトづつです。 全角文字があった場合、全角文字は1文字2バイトなので、 このまま読むと全角文字を半分に切ってしまい、文字化けする可能性があります。

ppmi
質問者

お礼

分かりました そこを注意すべきですね