• Publicidad

Búsqueda de fechas y comparación de archivos

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

Re: Búsqueda de fechas y comparación de archivos

Notapor explorer » 2009-07-22 18:00 @791

Hay un error en el programa: estamos mezclando la salida de readdir() con la función stat(), y no es correcto el uso de $fichero entre las dos.

Primero, decir que sigues insistiendo en poner '<' y '>' donde no debes.

Esto es lo correcto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $dir = 'C:/directoriodeprueba';
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Luego se hace un opendir de ese directorio, y lo que te devuelve readdir es el nombre de los ficheros DENTRO del directorio, pero SIN la ruta completa a los ficheros.

Un ejemplo. Si el directorio es 'C:/directoriodeprueba', y dentro de ese directorio hay un fichero que se llama 'proceso.PGX', entonces readdir() nos devolverá 'proceso.PGX'.

Ahora bien, si ese nombre de fichero se lo damos a stat(), la función intentará buscar el fichero en el directorio de trabajo del programa, o dicho de otra manera, en el directorio desde donde hemos arrancado el programa. Si ese directorio no era 'C:/directoriodeprueba', entonces stat() no encontrará el fichero.

Soluciones: 1) hacer un chdir() a $dir antes de nada, para ponernos en el mismo directorio donde están los ficheros de los que queremos sacar sus stat(). Y, otra forma, 2) agregar $dir al argumento que le pasamos a stat():
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $mtime = (stat("$dir/$fichero"))[9];
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

De esta segunda manera, le estamos dando a stat() la ruta completa al $fichero, y ya podrá encontrarlo.

Ahora corrijo el código que publiqué. Recuerda que tu también puedes reeditar tus mensajes, por lo que no necesitas enviar tu programa en cada publicación.

Para la segunda línea, estás intentando usar las funciones definidas en File::stat o File::Stat. Y esos módulos no los hemos cargado.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Publicidad

Re: Búsqueda de fechas y comparación de archivos

Notapor mvil1984 » 2009-07-23 09:54 @454

El programa sigue sin leerme la fecha de modificación. Si le hago un print() al fichero, éste encuentra la ruta y el archivo, pero no está obteniendo la fecha de modificación del fichero. No consigo saber el porqué. Busco en foros pero sin respuesta. Si pruebo la función aparte sí me funciona y me obtiene la fecha de modificación, no entiendo qué está pasando. Ya actualicé el programa para que lo veas.
mvil1984
Perlero nuevo
Perlero nuevo
 
Mensajes: 21
Registrado: 2009-07-17 15:10 @674

Re: Búsqueda de fechas y comparación de archivos

Notapor explorer » 2009-07-23 14:19 @638

Ahora lo miro con más detalle... pero antes, algo que puede parecer obvio...

Fíjate que estamos buscando por ficheros que terminen en '.PGC'. Exactamente en '.PGC', en MAYÚSCULAS.

¿No será que tus ficheros tienen la extensión en minúsculas?

Entonces, cambia la línea a
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
next if $fichero !~ /\.PGC$/i;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Le hemos agregado '/i' para que tenga en cuenta tanto el caso de minúsculas como mayúsculas.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Búsqueda de fechas y comparación de archivos

Notapor mvil1984 » 2009-07-23 14:45 @656

Sí, la extensión termina en mayúscula, pero igual no consigo que lea la fecha de modificación, la fecha que me lee para todos los archivos es "Wed Dec 31 18:00:00 1969", todos los archivos me salen con esta fecha, no entiendo por qué. Ojalá y puedas ayudarme.

Gracias explorer.
mvil1984
Perlero nuevo
Perlero nuevo
 
Mensajes: 21
Registrado: 2009-07-17 15:10 @674

Re: Búsqueda de fechas y comparación de archivos

Notapor explorer » 2009-07-23 15:09 @673

Esa fecha es muy rara...

Cuando el programa llega a la línea 30, ¿sale la fecha correcta en pantalla? ¿qué sale?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Búsqueda de fechas y comparación de archivos

Notapor mvil1984 » 2009-07-23 16:16 @719

No, esto es lo que me genera el archivo,


MONITOREO

============================================================
ARCHIVOS PROCESADOS

========================================


ARCHIVOS NO PROCESADOS

========================================
Prueba1.PGCWed Dec 31 18:00:00 1969
Prueba2.PGCWed Dec 31 18:00:00 1969
Prueba3.PGCWed Dec 31 18:00:00 1969
Prueba4.PGCWed Dec 31 18:00:00 1969
Prueba5.PGCWed Dec 31 18:00:00 1969
Prueba6.PGCWed Dec 31 18:00:00 1969
Prueba7.PGCWed Dec 31 18:00:00 1969
Prueba8.PGCWed Dec 31 18:00:00 1969
Prueba9.PGCWed Dec 31 18:00:00 1969
Prueba10.PGCWed Dec 31 18:00:00 1969
mvil1984
Perlero nuevo
Perlero nuevo
 
Mensajes: 21
Registrado: 2009-07-17 15:10 @674

Re: Búsqueda de fechas y comparación de archivos

Notapor explorer » 2009-07-23 16:22 @723

Yo me refiero al print() que hay en la línea 30.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Búsqueda de fechas y comparación de archivos

Notapor explorer » 2009-07-23 16:48 @741

mvil1984 escribiste:El programa sigue sin leerme la fecha de modificación. Si le hago un print() al fichero, éste encuentra la ruta y el archivo, pero no está obteniendo la fecha de modificación del fichero. No consigo saber el porqué. Busco en foros pero sin respuesta. Si pruebo la función aparte sí me funciona y me obtiene la fecha de modificación, no entiendo qué está pasando. Ya actualicé el programa para que lo veas.


Por de pronto, cambia la línea
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my @ayer = localtime( time   - 86_400 );
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
por esta otra:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my @ayer = localtime( time() - 86_400 );
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


¿Seguro que esta línea está bien escrita?
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $texto = "$fichero".scalar localtime($mtime);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Estoy en los canales IRC:
* irc://irc.freenode.net/#perlenespanol
* irc://irc.freenode.net/#perl-es
* irc://irc.perl.org/#espana.pm
* irc://irc.irc-hispano.org/#perl
donde puedes localizarme, y así vemos el problema en directo.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Búsqueda de fechas y comparación de archivos

Notapor mvil1984 » 2009-07-23 17:03 @752

Lo acabo de escribir como me dijiste y sigue igual, será hasta que llegue a mi casa, dentro de hora y media porque de mi trabajo no tengo acceso, y me conecte para que me puedas ayudar.

Gracias por su ayuda, si no puede de esta forma intentaré leer el directorio y meter los archivos en arreglos para luego leerlos y no hacerlo con el opendir(), ya que puede ser que suceda algo con ello, ya que no conozco muy bien la función.
mvil1984
Perlero nuevo
Perlero nuevo
 
Mensajes: 21
Registrado: 2009-07-17 15:10 @674

Re: Búsqueda de fechas y comparación de archivos

Notapor mvil1984 » 2009-07-23 17:06 @754

EN CUANTO AL PRINT() DE LA LÍNEA 30, SÍ LO IMPRIME, DICE "WED JUL 22 18:00:00 2009", eso sí sale bien, pero lo que no lee bien es la fecha de modificación del archivo, como indique antes, la fecha que se imprime en todos los archivos es "Wed Dec 31 18:00:00 1969
", todos dicen eso, y no me lee la fecha del archivo.
mvil1984
Perlero nuevo
Perlero nuevo
 
Mensajes: 21
Registrado: 2009-07-17 15:10 @674

AnteriorSiguiente

Volver a Básico

¿Quién está conectado?

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