我想組裝一個腳本,它將首先識別在一個文件夾下創建的最新日誌文件,然後打開它並查找特定數據。基本上,我會在這個日誌文件中尋找特定的錯誤並將錯誤打印到新的日誌文件中。Perl腳本來讀取最新的日誌文件
我知道如何才能擁有最新的文件進行排序,但在閱讀最新的文件,並將其複製到新的日誌文件有問題
use File::stat;
$dirname = 'C:/Luntbuild_Logs';
$timediff = 0;
opendir DIR, "$dirname";
while (defined($file = readdir(DIR))) {
if ($file ne "." && $file ne "..") {
$diff = time() - stat("$dirname/$file")->mtime;
if ($timediff == 0) {
$timediff = $diff;
$newest = $file;
}
if ($diff < $timediff) {
$timediff = $diff;
$newest = $file;
}
}
}
print $newest;
$file1 = "$dirname/$file";
open(FILE1, "<$newest");
my (@fprint) = <FILE1>;
close FILE1;
open(FOUT, ">list1.txt") || die("Cannot Open File");
foreach $line (@fprint) {
print "$line" if $line =~ /> @/;
print "$line" if $line =~ /ORA-/;
print FOUT $line;
}
close FOUT;
出了什麼問題?你爲什麼不在這兩個開放中使用「死亡」? – choroba
可能的重複[Perl - 對目錄中的日誌文件進行排序,選取最新生成的日誌文件並僅打印特定數據](http://stackoverflow.com/questions/12050020/perl-sort-the-log-files -from-a-directory-pick-up-latest-generated-log-fil) – Toto