Re: Eliminar carpetas con una antigüedad de más de 12 horas
Publicado: 2015-05-07 18:05 @795
A -C le tienes que dar la ruta completa:
if ( -C "/home/sim/data/$file" > 0.5 )
Y lo mismo para rmtree(). Lo que hace opendir y readdir es devolverte la lista de archivos y carpetas de un directorio, pero NO entra en ese directorio ni nos devuelve la ruta absoluta a esos archivos y carpetas.
Las llaves de las líneas 13 y 17 las puedes quitar.
El error decía que estamos usando un valor indefinido con '>'. Eso quiere decir que -C $file daba un resultado indefinido.
Consultando perldoc -f -X, dice:
Así que nos está avisando que el archivo o carpeta $file no existe en el directorio actual. De ahí deducimos que no estamos en el mismo directorio que en donde está extrayendo los nombres readdir(). Por eso hay que darle la ruta absoluta. O... hacer primero un chdir '/home/sim/data/'; y entonces sí funciona (por que estamos en el mismo directorio).
if ( -C "/home/sim/data/$file" > 0.5 )
Y lo mismo para rmtree(). Lo que hace opendir y readdir es devolverte la lista de archivos y carpetas de un directorio, pero NO entra en ese directorio ni nos devuelve la ruta absoluta a esos archivos y carpetas.
Las llaves de las líneas 13 y 17 las puedes quitar.
El error decía que estamos usando un valor indefinido con '>'. Eso quiere decir que -C $file daba un resultado indefinido.
Consultando perldoc -f -X, dice:
Using text Syntax Highlighting
Lista de funciones de Perl en orden alfabético
-X IDENTIFICADOR_ARCHIVO
-X EXPR
-X IDENTIFICADOR_DIR
-X Un test de archivo, donde X es una de las letras listadas abajo. Este
operador unario toma un argumento, bien sea un nombre de archivo o un
identificador de archivo o de directorio, y comprueba si el archivo
asociado para ver si algo sobre él es cierto. Si el argumento se
omite, se prueba $_, excepto para "-t", que prueba STDIN. Mientras no
se diga lo contrario, se devuelve 1 para verdadero y '' para falso. <span style="font-weight: bold">Si
el archivo no existe o no puede examinarse, devuelve "undef"</span> y
actualiza $! (errno). A pesar de los nombres graciosos, la precedencia
es la misma que cualquier otro operador unario con nombre. El operador
puede ser cualquiera de estos:
-X IDENTIFICADOR_ARCHIVO
-X EXPR
-X IDENTIFICADOR_DIR
-X Un test de archivo, donde X es una de las letras listadas abajo. Este
operador unario toma un argumento, bien sea un nombre de archivo o un
identificador de archivo o de directorio, y comprueba si el archivo
asociado para ver si algo sobre él es cierto. Si el argumento se
omite, se prueba $_, excepto para "-t", que prueba STDIN. Mientras no
se diga lo contrario, se devuelve 1 para verdadero y '' para falso. <span style="font-weight: bold">Si
el archivo no existe o no puede examinarse, devuelve "undef"</span> y
actualiza $! (errno). A pesar de los nombres graciosos, la precedencia
es la misma que cualquier otro operador unario con nombre. El operador
puede ser cualquiera de estos:
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
Así que nos está avisando que el archivo o carpeta $file no existe en el directorio actual. De ahí deducimos que no estamos en el mismo directorio que en donde está extrayendo los nombres readdir(). Por eso hay que darle la ruta absoluta. O... hacer primero un chdir '/home/sim/data/'; y entonces sí funciona (por que estamos en el mismo directorio).