1

我希望通过输入文件来更改 Perl 中的 txt 文件,然后在现有文件之间用空行导出它。我该怎么做呢?到目前为止我有这个:

#!/usr/bin/perl;
use strict;
use warnings;
print "Hi! This Program Will Input\n";
print "The File and Export A New\n";
print "File With A Blank Line In-Between\n";
print "Every Other Line\n";
sleep(2);
print "\n";
print "\n";
print "Working\n";
print "\n";
sleep(1);
print "\n";
print "Working\n";
sleep(1);

open(my $in, "<", "input.txt") or die "Can't Open Input.txt: $!";
open(my $out, ">", "output.txt") or die "Can't Open Output.txt: $!";
my @lines = <$in>;
while (<$in>)  {
    print $out 
    print $lines[$#lines];
    print "    ";
}


print "Completed Successfully!!\n";
print "\n";
print "Outputed to Output.txt\n";


close $in or die "$in: $!"

我错过了什么?我只是在学习 Perl,所以我不太了解。

4

1 回答 1

2

问题是while循环。您可以使用 遍历文件句柄while,或者使用 对保存文件内容的数组进行循环forwhile迭代器可以被处理一次直到它们被耗尽,并且你这样做是为了将其所有内容提取到数组中,在循环中再次处理它是错误的。

除此之外,要打印到文件句柄,您必须将它作为第一个参数传递给print()同一调用中的函数,并且" "不是换行符,\n而是换行符。

my @lines = <$in>;
#while (<$in>)  {
for ( @lines ) { 
    print $out $_; 
    print $out "\n";
}

但是您可以忘记所有这些代码并学习单行代码。这会产生相同的结果:

perl -ne 'print "$_\n"' input.txt >output.txt
于 2013-10-22T15:15:05.700 回答