重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

いつもお世話になっています。
perlで困っていることがあるので、質問させてください。

大容量のテキストファイルを指定バイトで改行したいのですが、
どういった方法があるのでしょうか。

具体的には100000バイト近くあるファイルを200バイトごとに区切りたいのです。syswriteで何とかなるのかな?と思って試行錯誤しているのですが、
ファイルの末尾に1個改行が入るだけで、思ったような挙動をしてくれません。

正直かなりこまっているので、何かヒントをいただけないでしょうか。
よろしくお願いいたします。

A 回答 (3件)

一行野郎で。



perl -i.bak -E 'BEGIN{$/=\200};while(<>){say $_}' 対象ファイル

マルチバイト文字の泣き別れなどはdon't careです。
5.10 頼前のバージョンであるなら、-E を -e に変え、say を
print $_, "\n" にしてください。
    • good
    • 0

日本語だとして、


fold_pl
http://www.srekcah.org/~utashiro/perl/scripts/fo …
を使うのが普通です。
require 'fold.pl';
#???????????????略#
while (length($str)) {
(my $folded, $str) = fold($str, $bytes);
print $folded, "\n";
}
半角カタカナを含むとどうなるかはためとていません。処理前に半角カタカナ→全角カタカナの変換をしておく。
 なお、使い方はリンクをご確認ください。
    • good
    • 0

単純に「200バイト読み込んで『改行を付けて』出力する」だけでいいんじゃないの?


今どんなプログラムになってますか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!