在 Perl 中,使用 File::Tail 尝试使用正则表达式进行 grep 模式,但 $1 未初始化

In Perl, using File::Tail trying to grep pattern using regex, but $1 unintialised

我正在尝试不断跟踪不断增长的文件,并在文件中添加新行时使用正则表达式提取信息,但 </code> 似乎不喜欢它。</p> <p>代码</p> <pre><code>#!/usr/bin/perl $| = 1; use strict; use warnings; use File::Tail; my $file=File::Tail->new( name=>"sample.txt", maxinterval=>1, interval=>0.05); while (defined(my $line=$file->read)) { chomp($line); print "$line\n"; if ($line =~ m/ls/) { print ; print "MATCH\n"; } }

输入到sample.txt,输入到bashshell

echo "test1" >> sample.txt
echo "test2" >> sample.txt
echo "test3" >> sample.txt
echo "testls4 >> sample.txt

输出

test1
test2
test3
testls4
Use of uninitialized value  in print at test.pl line 19.
MATCH

很明显,有一个匹配项,因为 MATCH 显示在输出上,但为什么 </code> 仍然未初始化?奇怪的是,在 <code>while 循环之外,我对

没有任何问题

</code> 和类似的包含括号捕获的字符串。您需要用括号将您的正则表达式模式括起来,以使 <code> 包含您匹配的内容。