1

さて、私が読んでいるファイルに次のものがあるとしましょう:

File:foobarbar.xml
abc
def
ghi
File:barbar.xml
jkl
mno

出力を次のようにしたいと思います。

foobarbar
barbar

しかし、何らかの理由で私は得ています

foobarbar

次のコードを使用しています。

if (/File([\s\S]+?)xml/) {
    $key= $1; 
    print OUTPUT "$key\n"
}

注: 上記のコードでは、 はではなく$keyに設定されています。どんな助けでも大歓迎です!$number one$lower case letter L

4

2 に答える 2

2

その正規表現は最初のファイルにのみ一致します。/g修飾子を使用してすべての一致を取得します

while (/File:(.*)\.xml/g) {
    $key = $1;
    print OUTPUT "$key\n";
}
于 2012-07-25T17:27:44.767 に答える
2

以下のコードは、入力を1行ずつ読み取ると期待どおりに機能します。

while(<>) {
  if (/File:([\s\S]+?)\.xml/){
    $key= $1; 
    print "$key\n";
  }
}
于 2012-07-25T17:31:47.747 に答える