file timestamps and removal [was Re: SPUG:DOS / BASIC Script]

Michael R. Wolf MichaelRunningWolf at att.net
Fri Jan 17 18:07:19 CST 2003


Dan Ebert <mathin at mathin.com> writes:

> Could you incoporate the date into the raw data filename?  That way you
> wouldn't have to worry about creating directory or moving a file.  A
> seperate script could then be written to look at the filenames and
> delete the old ones.

I've done a similar thing, using Unix dates (useful for scripts) and
also human readable dates encoded in the filename.

How 'bout something like this (no warranty, completly untested..):

# Name, create, use, close, and touch(1) a log file.

my $unix_now = time;
my $human_now = local_time($unix_now);

my $file_name = sprintf("DB_trailings.%d.%s.txt", $unix_now, $human_now);

open my $fh, $file_name or die "problem with trailings file $file_name: $!";
#use $fh...
close $fh;

utime ($unix_now)x2, $file_name;  # To make name consistant with timestamp.

#Then remove all old ones.

$now = time;
$threshhold = $now - 14*(24*60*60);

@too_old = grep { /^DB_trailings\.(\d+)\./ && $1 > $threshhold }
                glob("DB_trailings.*.*.txt");

@unsucessful = unlink(@too_old);
warn "could not unlink @unsucessful: $!" if @unsucessful;

-- 
Michael R. Wolf
    All mammals learn by playing!
        MichaelRunningWolf at att.net




More information about the spug-list mailing list