Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

this kinda what you're looking for?

by cforde (Monk)
on May 17, 2001 at 00:22 UTC ( [id://81068]=note: print w/replies, xml ) Need Help??


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.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://81068]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others meditating upon the Monastery: (3)
As of 2024-04-25 12:21 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found