in reply to Modified Date, file renaming

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

Replies are listed 'Best First'.
Re: this kinda what you're looking for?
by ManicMantis (Initiate) on May 17, 2001 at 10:26 UTC

    It's great, but I run into a couple of problems. On a Windows 2k box I get an error saying the files can't be renamed because I don't have access (logged on as admin, full control and ownership of all the files in question). And on a Windows ME box it tells me they're unable to be renamed because there is 'No such file or directory.'

    I wasn't kidding when I said I was brand new to all of this, so attempts to fix it have been less than successful. Here's what I have so far, be gentle:

    
    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;
        $rdate = (localtime($date));
        close $handle;
        $number{"$string,$rdate"}++;
        print "$logfile --> $string, $rdate " . '(' . $number{"$string,$rdate"} . ')' . ".log\n";
        rename "$directory/$logfile", "$directory/$string,$rdate" . $number{"$string,$rdate"} . ".log"
            or print "unable to rename $logfile: $!\n";
    }
    

    I also want to thank everyone for their help, it's a learning experience and I appreciate everyone's contribution. Just looking forward to the time when I'll be the one offering assistance.