argument 2 of DateCalc() should be "$days days ago" NOT "$days ago"
sorry

John Ackley wrote:


Khairul Azmi wrote:
Hi all,
I have this problem. There is a script that stores log files into folders
that follows structure of the following

YYYY/MM/DD

eg..

/var/log/projects/2006/06/20/8231.tgz
/var/log/project1/2006/06/21/1432.tgz
/var/log/projects/2006/06/22/1756.tgz
/var/log/projects/2006/06/23/1756.tgz

Now I want to write a script that would erase all logs that has been stored except for the log for the current day. For the above example, since today is 23 June 2006, the code will erase log files in folders 2006/06/20/ and 2006/06/21/ only. Can somebody give ideas on how to do this. This script is
to be ran once a day.

Thanks in advance.

mie

assuming, as you state, "erase log files" (not directories)
assuming 2 days prior as per your example
assuming all earlier log files
try this which is easy to modify if assumptions are not correct


#! /usr/bin/perl

use strict;
use warnings;

use Date::Manip;

my $directory;
my $days = 2;
while( -d
   ($directory =
       UnixDate(DateCalc('today',"$days ago"),
           '/var/log/projects/%Y/%m/%d')) ) {
   unlink "$directory/*";
   $days++;
}


--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to