0

Windows 環境で Strawberry の Perl 5.16.1 を使用しています。非常に大きなテキスト ファイルを読み取る Perl スクリプトがあります。最小のテキスト ファイルは 30M です。最後の行の最後に改行がないファイルを読み取ると、非常に奇妙な結果が得られます。常に発生するわけではありませんが、発生する場合は、Perl スクリプトで以前に開いた別のファイルの I/O システムからキャッシュされたデータを読み取っているようです。ファイルを手動で編集して改行を追加すれば問題ありません。行カウンターといくつかのインライン コードを追加して、ファイルの終わりに近づいたときに何が起こるかを表示し、気が狂わないようにしました。試して修正するために、これをスクリプトに追加しようとしました:

open (SS_LOG, ">>", $SSFile) or die "Can't open $SSFile\r\n $!\r\n";
print SS_LOG "\r\n";
close SS_LOG;

しかし、それは何もしません。ファイルは同じサイズのままです。また、データを大きな配列に格納しています。

他の誰かがこのようなものを見たことがありますか?

4

1 に答える 1

0

出力のバッファリングを解除してみてください:

SS_LOG->autoflush(1);
于 2013-10-30T20:43:19.187 に答える