in reply to How to read the last updated lines from a log file
poj#!/usr/bin/perl use strict; # use strftime use POSIX qw(strftime); my $logdate = strftime "%Y%m%d", localtime; my $logpath = "c:/temp" # change to suit; # set directory my $dir = "$logpath/$logdate"; # get list of files with mtime in seconds opendir(FD,$dir) or die "$!\n"; my @files = map { [ (stat("$dir/$_"))[9] ,$_ ] } grep !/^\.\.?$/,readd +ir(FD); print "List of files in $dir\n"; for (@files){ print "@$_\n" }; close(FD); # sort latest first sub rev_by_date { $b->[0] <=> $a->[0] }; my @sorted_list = sort rev_by_date @files; print "List of sorted files\n"; for (@sorted_list){ print "@$_\n" }; # shift latest file from front of array my $latestlog = ( shift @sorted_list )->[1]; print "lastest log = $latestlog\n"; #fetching the last modified log my $logfile = "$dir/$latestlog"; open(F,'<',$logfile) or die "Could not open $logfile : $!\n"; # store last message only my $message; while (<F>){ if (/^<START date/){ $message = $_; } else { $message .= $_; } } close(F); print $message; #sendmail($now,$message);
|
|---|