好的,所以我读了我的文件并打印得很好,但现在我正在尝试将数据输出到一个新文件,但它无法正常工作。任何人都可以在这看到错误吗?
#!/usr/bin/perl -w
use strict;
use warnings;
use diagnostics;
$| = 1;
open MYFILE, "+<", 'source_file.txt' or die $!;
my $linenum = 1;
while (<MYFILE>) {
print $linenum++;
print ": $_\n";
}
open OUT, "+>", 'output_report.txt' or die $!;
while (<OUT>) {
print "SUMMARY SECTION:\n\n";
print "# of total lines in the file - '2006'\n\n";
}
新文件'output_report'已创建,但当我打开新的txt文件时,这是我的不幸,空白。另外,如果我使用STDOUT,是否必须使用STDERR?谢谢你!
答案 0 :(得分:6)
变化:
while (<OUT>) {
print ...
print ...
}
为:
print OUT ...
print OUT ...
<>
用于阅读,而不是写作。你的代码是从文件中读取的,这是空的,所以它甚至都不会进入循环(它会打印到STDOUT,而不是文件)。
此外,如果您只是阅读,请使用<
,而不是+<
。如果您只是写作,请使用>
,而不是+>
。其他模式用于对同一文件进行读写混合。
答案 1 :(得分:1)
“尖括号中的OUT”<OUT>
用于阅读,而不是用于书写。使用以下内容进行写作。
print "SUMMARY SECTION:\n\n";
print "# of total lines in the file - '2006'\n\n";
而不是上面,使用
print OUT "SUMMARY SECTION:\n\n";
print OUT "# of total lines in the file - '2006'\n\n";
答案 2 :(得分:0)
确保在完成文件后调用close
,以便刷新缓冲区并释放句柄。