• Publicidad

DirectorioVolume System Information no puedo leerlo

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

DirectorioVolume System Information no puedo leerlo

Notapor zionperl » 2011-12-07 17:57 @789

Hola, tengo un script Perl que ejecuto desde consola para buscar archivos en un
directorio pasándole la extensión. El problema es que cuando llega a la carpeta de
Volume System Information se detiene el script porque no tiene permisos... ¿Cómo puedo
hacer para evitar leer esa carpeta...? Este código lo copie, no es mio.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $DIR       = 'D:/test/';
  2. my $EXTENSION = '.txt';
  3. my $COUNTER   = 0;
  4.  
  5. buscador($EXTENSION,$DIR,\$COUNTER);
  6.  
  7. print "\nTotal de archivos *.$EXTENSION en directorio $DIR : $COUNTER\n";
  8. <STDIN>;
  9.  
  10. sub buscador
  11. {
  12.     my ($ext,$dir,$ref_total) = @_;
  13.    
  14.     opendir(DIR,$dir) || die "# buscador : no puedo abrir $dir\n";
  15.     my @nodos = grep(!/^\./, (sort(readdir(DIR))));
  16.     #guarda todos los archivos en @nodos a excepcion de ocultos, . y .. ordenados
  17.     closedir(DIR);
  18.    
  19.     foreach my $nodo (@nodos)  
  20.     {
  21.         $nodo = $dir.'/'.$nodo;
  22.         $nodo =~ s/\/\//\//g; # evita dobles //
  23.        
  24.         if(-d $nodo) # recursion para subdirectorios internos
  25.         {
  26.                 buscador($ext,$nodo,$ref_total);    
  27.         }
  28.         elsif($nodo =~ m/$EXTENSION$/)
  29.         {
  30.                 print "$nodo\n";  
  31.                 $$ref_total++;
  32.         }
  33.     }
  34. }
  35.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
zionperl
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2011-12-07 17:51 @786

Publicidad

Re: DirectorioVolume System Information no puedo leerlo

Notapor explorer » 2011-12-07 18:06 @796

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

¿En qué sistema operativo estás?

Según el código, parece que estás en Windows/DOS...

¿Qué mensaje de error saca, si sale algo?

Si la carpeta se llama justamente "Volume System Information", se puede poner una línea así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     @nodos = grep(!/^Volume System Information$/, @nodos);
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: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: DirectorioVolume System Information no puedo leerlo

Notapor zionperl » 2011-12-07 21:20 @930

Hola explorer, gracias por la bienvenida y respuesta.
Sí, estoy en windows 7... El problema surgía cuando ponía el directorio raíz C:/ o D:/
para la búsqueda porque al llegar a la carpeta System Volumen Information no la podía abrir.
(Hoy escribí el nombre de la carpeta al revés.)

¡Probé la solución que me pasaste y me sirvió!, de la siguiente forma:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my @nodos = grep(!/^\./, (sort(readdir(DIR))));
  2. @nodos = grep(!/^System Volume Information$/, @nodos);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


No sé si se pueden poner juntar las dos expresiones. La primera no la puedo sacar porque sino, lee el directorio . y ..
zionperl
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2011-12-07 17:51 @786

Re: DirectorioVolume System Information no puedo leerlo

Notapor explorer » 2011-12-08 07:03 @336

Quizás sea así (no probado):

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my @nodos = grep { !/^\./  and  !/^System Volume Information$/ } sort readdir DIR;
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: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: DirectorioVolume System Information no puedo leerlo

Notapor zionperl » 2011-12-09 02:48 @158

Lo probé y sí funciona. Muchas gracias por la ayuda.
Hace poco empecé a usar Perl y ¡me resulta un lenguaje
muy agradable para el procesamiento de textos y directorios!
zionperl
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2011-12-07 17:51 @786


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron