0

我在 Windows 环境中使用来自 Strawberry 的 Perl 5.16.1。我有一个读取非常大的文本文件的 Perl 脚本。最小的文本文件是 30M。在读取最后一行末尾没有换行符的文件时,我会得到非常奇特的结果。它可能不会一直发生,但是当它发生时,就好像它正在从 I/O 系统中读取我之前使用 Perl 脚本打开的另一个文件的缓存数据。如果我手动编辑文件并添加换行符,那很好。我添加了一个行计数器和一些内联代码来显示当我接近文件末尾时会发生什么,以确保我不会发疯。为了尝试修复,我尝试将其添加到我的脚本中:

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 回答