You might want to translate the dates into something more human readable and change the string extracted from the files, but here's a start:
use FileHandle;
my $directory = 'c:\temp';
my @logfile;
my $handle;
my %number;
my $date;
my $string;
opendir LOGDIR, $directory
or die "Unable to open $directory: $!";
@logfile = grep {/\.log$/} readdir(LOGDIR) # only .log files
or die "unable to read $directory: $!";
foreach my $logfile (@logfile) {
unless ($handle = new FileHandle "<$directory/$logfile") {
print "Unable to open $logfile: $!\n";
next;
}
unless (read $handle, $string, 5, 0 ) { # get first 5 bytes
print "unable to read $logfile: $!\n";
close $handle;
next;
}
$date = (stat $handle)[9]; # get modify time
close $handle;
$number{"$string,$date"}++;
print "$logfile --> $string,$date," . $number{"$string,$date"} . "
+.log\n";
rename "$directory/$logfile", "$directory/$string,$date," . $numbe
+r{"$string,$date"} . ".log"
or print "unable to rename $logfile: $!\n";
}
Have fun,
Carl Forde