0

我尝试将 \n 添加到此来源的输出中:

sub fileresult{
open my $file;
my @listOfFiles;

while (<$file>) {
  if (m/^\s+ (\w+)/x) {
    push @listOfFiles, $1;
  }
}
close $file;
open my $fh, '>', ".\input.txt" or die "Cannot open input.txt: $!";
print  $fh join "\n", "@listOfFiles";
}
close $fh;

输出如下:

A B C

我想成为:

A
B
C

词首和词尾没有空格。

4

2 回答 2

2

您的示例代码中没有print。你如何生成输出?我的魔法球说你用过

print "@listOfFiles";

它打印由特殊变量分隔的数组成员$",请参阅perlvar。您可以将其设置为换行符以更改输出:

{ local $" = "\n" ; print "@listOfFiles" }

或者,不那么晦涩,您可以使用join

print join "\n", @listOfFiles;
于 2013-05-21T07:49:37.477 回答
1

也许您不想替换任何内容而只匹配它,m/^\s+ (\w+)/x而不是s/^\s+ (\w+)/x/

我也看不到你打印它们的地方,但你可以在项目之间插入换行符,比如:

print join "\n", @listOfFiles;

或者

do { local $" = "\n"; print "@listOfFiles" };
于 2013-05-21T07:49:23.307 回答