私はperlを初めて使用します。ディレクトリ内のログをソートし、最新のファイルをピックアップし、ログファイルから特定の内容のみをコピーして新しいファイルに出力するスクリプトを開発する必要があります。以下の perl スクリプトを作成しました。皆様の貴重な情報が必要です。
my($dir) = "C:\Luntbuild_Logs\LACOPBOC LACOPBOC_LASQABOCFC_";
$file = #Here i want to pick up the last generated log file from the above dir
my($newLog) = "new.log";
while (<MYFILE>) {
print "$line" if $line =~ /> @/;
print "$line" if $line =~ /ORA-/;
}
close (MYFILE);
I want my code to pick up the last generated log file from the dir and print the specific lines and redirect the output to the new log file.
以下のコードを修正してください。これで、私の srript は最新のファイルを並べ替えて印刷できます (ディレクトリ内のすべてのファイルは txt ファイルです) が、アクションを実行できません。
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;
}
}
}
open(FILE,"<$newest");
my(@fprint) = <FILE>;
close FILE;
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;