【发布时间】:2013-12-10 00:33:34
【问题描述】:
我正在编写一个脚本来读取一个大文件(>10 GB)并将数据从一个数组写入该文件中每一行的末尾。这是我的代码
my $count=0;
while(my $lines = <$FILE>){
seek $FILE, length($lines), 1;
print $FILE "\t", $array[$count];
$count++;
}
但我认为使用 seek 方法找到行尾是错误的。我无法理解这一点。任何人都可以看看这段代码有什么问题。在处理之前..
my 1st line
my 2nd line
my 3rd line
处理后....
my 1st line data1
my 2nd line data2
my 3rd line data3
data1,data2,data3 在@array 中。
代码详情:
- 文件以 +
- FILE 行是制表符分隔的。
- @array 保存 data1,2...
问题:
- 将指针移到每行的末尾
谢谢,
罗宾
【问题讨论】:
-
为什么不创建一个新文件,每行都附加数据?
-
请记住,您打印的数据不是“插入”的;它只是覆盖已经存在的任何内容。在具有固定长度记录的二进制文件中,这可能没问题。在您的情况下,您似乎正在覆盖当前数据(包括换行符)。写出第二个文件可能会更容易。
-
感谢 @Kenosis 和 @rutter 的建议。这里的问题是我正在编写的文件将有数百万行和 1000 列,尽管我可能从空白文件开始。对于所有数据数组,该文件必须被写入 (lines * cols) 次。这将是一个性能瓶颈。所以我试图用另一种方式来优化性能。我会尝试 @Borodin 的建议,并会尽快更新主题!!
标签: perl file-handling seek