我正在将一个文件中的字符串匹配,并希望打印在特定文件中该字符串之后写入的值。这是我尝试过的代码。它运行良好,但未产生任何输出

use strict;
use warnings;

open(my $file, "<", "abc.txt") || die ("Cannot open file.\n");
open(my $out, ">", "output.txt") || die ("Cannot open file.\n");

while(my $line =<$file>) {
chomp $line;
if ($line =~ /xh = (\d+)/) {
print $out $_;
}
}



abc.txt
a = 1 b = 2 c = 3 d = 4
+xh = 10 e = 9 f = 11
+some lines
+xh = 12 g=14
+some lines
some lines
+xh = 13 i=15 j=20
some lines


output.txt
10
12
13

请建议改善我的代码。每个xh前面都有一个“+”符号,每个“=”符号前后都有一个空格。我需要在其他文件中打印xh的每个值。几行开头有一个“+”号。提前致谢。

最佳答案

打印$_没有意义,因为在任何地方都没有使用它,因此您要检查$1捕获组的内容,

print $out $1;

07-27 22:08