• Publicidad

Listado de archivos con características

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

Listado de archivos con características

Notapor Danie_mc » 2011-11-17 14:43 @655

Hola, estoy haciendo un algoritmo que me liste los archivos que tenga en un directorio y, adicional a esto, me muestre la fecha de la última modificación; para esto tengo el siguiente código:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!C:\perl\bin\perl.exe -w
  2.  
  3. my @vec = (0,'');
  4.  
  5.        opendir(my $handle, $dir) || die;        
  6.  
  7.          while ($archivo = readdir($handle)) {
  8.  
  9.              $fecha = (stat($archivo))[9];
  10.  
  11.              if ($fecha > $vec[0]) {
  12.              
  13.               @vec = ($fecha ,$archivo);
  14.  
  15.              }
  16.              
  17.           print "$archivo  $vec[0]\n";        
  18.  
  19.          }
  20.          closedir $handle;  
  21.  
  22. <STDIN>;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


El problema es que cuando lo ejecuto me muestra bien los datos que necesito, pero adicional me muestra el siguiente error:

Use of uninitialized value $fecha in numeric gt (>) at $dir

En vez de la variable $fecha también he usado $_ pero me saca el mismo error.

Muchas gracias por los aportes.
Danie_mc
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2011-11-17 13:57 @622

Publicidad

Re: Listado de archivos con características

Notapor explorer » 2011-11-17 15:04 @669

Bienvenido a los foros de Perl en español, Danie_mc.

Pues... podría ser que el stat() no ha devuelto el valor esperado.

Según la documentación de la función, no está soportada en todos los sistemas operativos.

No veo otra cosa... Lo que me extraña es que salga $dir en el mensaje de error... debería indicar un número de línea, al menos.
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: Listado de archivos con características

Notapor Danie_mc » 2011-11-17 16:17 @720

Gracias por la ayuda.

El stat() sí me devuelve valor, y cuando este valor lo paso por la función
scalar localtime() me da la fecha pero entre líneas me sigue apareciendo el
mismo error...

Y aclaro lo de la variable $dir: en ésta tengo almacenada la ruta, y cuando me
imprime el error me imprime esa ruta.
Danie_mc
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2011-11-17 13:57 @622

Re: Listado de archivos con características

Notapor explorer » 2011-11-17 20:21 @889

Pues lo siento, pero no soy capaz de ver el error.

Te aconsejo que uses los pragmas

use warnings;
use diagnostics;


para que te den más información.
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: Listado de archivos con características

Notapor Danie_mc » 2011-11-18 10:16 @469

Muchas gracias.

Mira, pasó lo siguiente: usé los pragmas que me dijiste y cuando volví a ejecutar el archivo no me salió ningún error. Me listó todo sin problemas.

Intenté buscar información acerca de estos pragmas pero no fue mucho lo que encontré...

Si puedes, te agradecería mucho me dieras indicaciones acerca de éstos o algún enlace al que me pueda dirigir para tener más información.
Danie_mc
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2011-11-17 13:57 @622

Re: Listado de archivos con características

Notapor explorer » 2011-11-18 11:05 @503

No hace falta que vayas a ningún sitio. Es muy probable que tengas instalada la documentación Perl en tu propio ordenador.

Prueba con estos comandos:

perldoc warnings
perldoc diagnostics


Si no los encuentra, quizás te falte por instalar en tu sistema operativo algún paquete llamado perl-doc o algo parecido.

En la web, puedes ir a http://perldoc.perl.org . También puedes verlos en CPAN, en la distribución de perl.
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: Listado de archivos con características

Notapor Danie_mc » 2011-11-18 12:15 @552

¡Muchas gracias!
Danie_mc
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2011-11-17 13:57 @622

Re: Listado de archivos con características

Notapor Danie_mc » 2011-11-18 15:03 @668

Ya encontré el motivo por el que me salía este error, y al colocar estos pragmas no me salía... Solo bastó con quitar el -w de la primera línea y me lista correctamente; ahora el problema es que cuando me lista, lo hace con el nombre del archivo en el directorio pero con la última fecha de modificación del directorio...

¿ Alguna sugerencia ?

Aquí el código de nuevo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!C:\perl\bin\perl.exe
  2.  
  3. my $dir = 'C:\Users';
  4. my @vec = ( 0, '' );
  5.  
  6. opendir( my $handle, $dir ) || die;
  7.  
  8. while ( $archivo = readdir($handle) ) {
  9.  
  10.     $fecha = ( stat($archivo) )[9];
  11.  
  12.     if ( $fecha > $vec[0] ) {
  13.  
  14.         @vec = ( $fecha, $archivo );
  15.  
  16.     }
  17.  
  18.     print "$archivo";
  19.     print "" . scalar localtime( $vec[0] );
  20.     print "\n";
  21.  
  22. }
  23.  
  24. closedir $handle;
  25.  
  26. <STDIN>;
  27.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Danie_mc
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2011-11-17 13:57 @622

Re: Listado de archivos con características

Notapor explorer » 2011-11-18 18:32 @814

La línea 19 deberías ser:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     print " " . scalar localtime( $fecha );
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
para que saque la fecha del $archivo.

De hecho, no sé para que tienes @vec. Veo que lo usas para quedarte con el archivo con fecha más moderna, pero no sacas su resultado.

Lo que falta entonces son esta línea (fuera ya del bucle):
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. print "Archivo más moderno: $vec[1] ", scalar(localtime $vec[0]), "\n";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
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


Volver a Básico

¿Quién está conectado?

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

cron