Vik*_*iky 4 perl logging filehandle
我正在使用Perl处理日志解析脚本.我正在阅读日志文件,如下所示:
open(LOGFILE, "$logFile") || die "Error opening log file $logFile\n";
while(<LOGFILE>)
{
#Processing statements goes here.
}
Run Code Online (Sandbox Code Playgroud)
现在在处理语句中我想检查文件读取指针是否在最后一行.如果是,则希望在退出前处理条件.
所以问题是在while循环中用于逐行读取文件,如何确定它是否在最后一行?
but*_*ken 13
my $last;
while(<MYFILE>) {
$last = $_ if eof;
}
Run Code Online (Sandbox Code Playgroud)
虽然除非你对其他每一行做一些事情,但效率非常低.
如果您只关心最后一行,请查看File :: ReadBackwards.它专门用于日志文件以及最终感兴趣的项目.
安装该模块后,您可以非常轻松地弹出最后一行(而不是遍历整个文件直到找到它):
#!/usr/bin/env perl
use strict;
use warnings;
use File::ReadBackwards;
my $fh = File::ReadBackwards->new( 'dir_walk.rb' )
or die "Can't read 'dir_walk.rb': $!";
my $last_line = $fh->readline;
print $last_line;
Run Code Online (Sandbox Code Playgroud)
编辑:对于它的价值,我只推荐这个,如果你不希望通过整个文件看.也就是说,如果你要读完整个文件,那么这可能不是最好的解决方案.(我不太确定你的问题是你只想检查最后一行中的特定项目,还是你还关心日志的其余部分.)
归档时间: |
|
查看次数: |
4687 次 |
最近记录: |