如何添加\ n并从perl正则表达式中删除空格

时间:2013-05-21 07:42:35

标签: perl design-patterns

我尝试将\ 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

在单词的开头和单词的结尾处没有空格。

2 个答案:

答案 0 :(得分:2)

示例代码中没有print。你如何产生输出?我的魔球说你用了

print "@listOfFiles";

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

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

或者,不那么模糊,您可以使用join

print join "\n", @listOfFiles;

答案 1 :(得分:1)

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

此外,我看不到您打印它们的位置,但您可以在项目之间插入换行符,例如:

print join "\n", @listOfFiles;

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