Bienvenido a los foros de Perl en Español.
Podrías hacer una comparación de las fechas, a nivel de días desde el epoch, desde luego. Para saber el tiempo de última modificación del fichero se usa la función
stat(), que devuelve información de un fichero.
Algo así: con
time() tenemos la fecha actual en días. Y con
(stat($fichero))[9] tenemos, en días desde el epoch, la fecha de última modificación del
$fichero. La diferencia nos da cuánto tiempo tiene de vida el
$fichero:
(time-(stat($fichero))[9]) / 86_400.
Pero... eso es algo muy complicado para algo que se puede realizar usando solo un operador: el
-M: diferencia, en días, de tiempo entre la fecha de modificación del fichero y el arranque del programa.
Using perl Syntax Highlighting
#!/usr/bin/perl
# Entramos en el dir. de respaldo y lo abrimos
chdir '/tmp' or die "ERROR: No puedo entrar en dir de respaldo: $!\n";
opendir DIR
, '.' or die "ERROR: No puedo abrir el dir de respaldo: $!\n";
while( my $fichero = readdir DIR
) { # Leemos el directorio, fichero por fichero
next if # Saltamos al siguiente si
!-f
$fichero # no es un fichero normal
or $fichero !~ /^\d{4}\.\d{2}\.\d{2}$/ # o no corresponde a nuestro patrón
or -M
$fichero < 11; # o no es lo suficientemente viejo
print "Borrando $fichero\n";
unlink $fichero; # Lo borramos
}
closedir DIR
;Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
Fíjate que se ha añadido las comprobaciones de patrón y de ser un simple fichero. A la hora de borrar cosas, toda precaución es poca (
Guía del Administrador Paranoico).