• Publicidad

Eliminar carpetas con una antigüedad de más de 12 horas

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Re: Eliminar carpetas con una antigüedad de más de 12 horas

Notapor explorer » 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:
Sintáxis: [ Descargar ] [ Ocultar ]
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:
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).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Publicidad

Re: Eliminar carpetas con una antigüedad de más de 12 horas

Notapor enric73 » 2015-05-08 02:40 @153

explorer, gracias por las explicaciones. Ahora ya elimina las carpetas de más de 12 horas de creación. Muchas gracias. Solucionado.
enric73
Perlero nuevo
Perlero nuevo
 
Mensajes: 154
Registrado: 2012-03-16 06:27 @311

Anterior

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados

cron