怎么用perl取得一个文件的后N行

怎么用perl取得一个文件的后N行

怎么用perl取得一个文件的后N行
类似于tail -n3000 test.txt
看你要什么


简单的,只是为了实现功能,可以把Perl跟Shell混着用

my $TAIL=`tail -n3000 test.txt`;
我初学perl.还望指教一二,
这么说吧,我想取应用程序日志文件的后3000行,然后找到其中带有WARN信息的行!

可以给个样例代码么?


[Copy to clipboard] [ - ]
CODE:
#!/usr/bin/perl
use strict;
use warnings;
my $pattern = "WARN";
my $logfile = "log";
my @log = qx /tail -n3000 log/;
print grep { /$pattern/ } @log;

thanks a lot


QUOTE:
原帖由 dell_3148228 于 2008-4-7 17:00 发表
怎么用perl取得一个文件的后N行
类似于tail -n3000 test.txt

你改道啦?
#!perl

while(<>) {
        print if ($.>3000 && /WARN/);
}
#!perl -w

use strict;
use Tie::File;
tie my @array,'Tie::File',$ARGV[0];
map{ print $array[$_]."\n" if($array[$_]=~/WARN/);} (($#array-n+1) .. $#array);

File::ReadBackwards


QUOTE:
原帖由 gsging 于 2008-4-8 00:01 发表
#!perl

while() {
        print if ($.>3000 && /WARN/);
}

GOOD