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 に答える