我需要读取文件到最后并获取包含特定正则表达式模式的最后一行。我没有File:ReadBackwards
模块。
我尝试了下面的代码,但发现我没有安装PerlIO::reverse
。
我无法安装模块。请建议实现此目的的代码。
最终我想要以模式
开头的文件行(\d\d) (\w{3}) (\d{4}) (\d\d):(\d\d):(\d\d) --
这就是我试过的
open my $rev, '<:reverse', '$slogfile';
while ($line = <$rev>) { # do to contents reversely
print OUTLOG $line if $line =~ m/^(\d\d) (\w{3}) (\d{4}) (\d\d):(\d\d):(\d\d) --/;
close($rev);
}
答案 0 :(得分:1)
像往常一样读取文件,用你的模式测试每一行,并在每次匹配时保存整行。文件完成后,打印出你保存的内容 - 它将是最后一次匹配。
open my $fh, '<', $slogfile;
my $last_match;
while (<$fh>) {
if (m/^(\d\d) (\w{3}) (\d{4}) (\d\d):(\d\d):(\d\d) --/) { $last_match = $_ }
}
print OUTLOG $last_match;