STDOUT文件 - perl

时间:2013-12-01 22:22:11

标签: regex perl stdout

好的,所以我读了我的文件并打印得很好,但现在我正在尝试将数据输出到一个新文件,但它无法正常工作。任何人都可以在这看到错误吗?

 #!/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?谢谢你!

3 个答案:

答案 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";

试试此链接:http://www.perlfect.com/articles/perlfile.shtml

答案 2 :(得分:0)

确保在完成文件后调用close,以便刷新缓冲区并释放句柄。