这必须很明显,但我只是没有看到。

我有一个包含数千条记录的文档,如下所示:

Row:1 DATA:
[0]37755442
[1]DDG00000010
[2]FALLS
[3]IMAGE
[4]Defect
[5]3
[6]CLOSED

我设法使每个记录分开,现在我试图解析每个字段。

我正在尝试匹配编号的 header ,以便提取出接替它们的数据,但是问题是,当它们成功时,我的匹配项只会返回“1”,否则将不会返回任何内容。我尝试申请的任何比赛都在发生这种情况。

例如,将其应用于每个记录中的一个简单单词:
my($foo) = $record=~ /Defect/;
print STDOUT $foo;

如果每个记录包含“缺陷”,则为每个记录打印出“1”,如果包含其他内容则不打印任何记录。

或者:
$record =~ /Defect/;
print STDOUT $1;

绝对不打印任何内容。
$record =~ s/Defect/Blefect/

另一方面,将“缺陷”替换为“完美”。

我对为什么比赛 yield 如此之高感到非常困惑。
任何帮助将非常感激。

最佳答案

您需要使用捕获括号来实际捕获:

if ($record =~ /(Defect)/ ) {
    print "$1\n";
}

10-02 10:07