在 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>
包含您匹配的内容。
我正在尝试不断跟踪不断增长的文件,并在文件中添加新行时使用正则表达式提取信息,但 </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>
包含您匹配的内容。