- ベストアンサー
Perlでテキストファイルの処理方法
Perlでファイル入力は 下記のように記述します open (IN,"myInput.txt"); $lineno = -1; while (<IN>) { $lineno = $lineno + 1; @lines_org[$lineno] = $_; #print lines_org[$lineno]; #print $_,"\n"; } これで一行づつ入力できます ここで質問したいのは 入力ファイルに改行コードがないため 処理できないと思うのですが 一行づつ入力ではなく、1文字づつ入力する 入力方法はPerlにはないのでしょうか ちなみに入力ファイルは数メガある大きなファイル です よろしくおねがいします
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
open (IN,"myInput.txt"); の後に binmode(IN); とバイナリーモードにして、 while ( read(IN,$buf,1) ){ とかやれば、$bufに1文字入ると思われます。 今、Perlの実行環境が無いんで確認できないので、自身なしにします。
その他の回答 (1)
- Ethersky
- ベストアンサー率71% (168/235)
回答No.2
> read(IN,$buf,1) これは1文字づつではなく1バイトづつです。 全角文字があった場合、全角文字は1文字2バイトなので、 このまま読むと全角文字を半分に切ってしまい、文字化けする可能性があります。
質問者
お礼
分かりました そこを注意すべきですね
お礼
ありがとうございました 早速、試してみます
補足
おかげさまで、ずいぶん進展しました >実行環境が無い ということは最近は使ってないわけですね >while ( read(IN,$buf,1) ){ こうした記述が間違いなく書けてすごいな と思いました