• Publicidad

Cómo ver directorios

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

Cómo ver directorios

Notapor BigBear » 2010-03-06 20:52 @911

Hola.

Ando teniendo una duda básica, porque quiero saber cómo listar todos los directorios en la ruta en la que se encuentra el script Perl ejecutado.

Ejemplo: si ejecuto el script en C:/, quisiera saber cómo saber todos los directorios en esa unidad y poder comprobar que son directorios.

¿Alguien me podría ayudar?
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Publicidad

Re: Cómo ver directorios

Notapor natxo » 2010-03-07 02:03 @127

Para saber en qué lugar del sistema de archivos te encuentras, usa el módulo Cwd (parte de la distribución de Perl, no tienes que instalar nada). Este módulo exporta varias funciones para saber desde dónde se llama el script.

Para leer un directorio primero tienes que 'abrirlo' con opendir(). Una vez abierto, puedes ver lo que hay dentro con readdir().

En este paso puedes usar los test de Perl, tipo
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if (-d $fichero) {
   # hacer algo;
}
 
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

para procesar sólo los directorios que encuentres. Si necesitas encontrar directorios de manera recursiva, entonces tendrás que usar File::Find.

Los distintos tipos de file tests los puedes ver aquí: http://perldoc.perl.org/functions/-X.html

Y una vez procesado, lo cierras con closedir().


Si pones código que hayas escrito y no funciona, seguro que se puede mirar por qué.

Aquí tienes un pequeño script que hace eso que quieres:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!usr/bin/perl

use strict;
use warnings;
use Cwd;

my $dir = getcwd;

opendir (DIR, $dir)  or die "cannot open $dir: $!";

while ( my $filename = readdir(DIR)) {
    next if $filename eq '.' or $filename eq '..';

    if (-d $filename ) {
        print "$filename is a folder\n";
    }
    elsif (-f $filename) {
        print "$filename is a file\n";
    }
}
 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
saludos,
Natxo Asenjo
natxo
Perlero nuevo
Perlero nuevo
 
Mensajes: 76
Registrado: 2007-08-09 16:22 @723
Ubicación: Países Bajos

Re: Cómo ver directorios

Notapor BigBear » 2010-03-07 14:31 @646

Gracias, Natxo. Tengo otra duda teniendo en cuenta tu script. ¿Cómo hago cuando una vez detectado un directorio, tu script liste todos los archivos y directorios como hizo con el primero, hasta que termine listando todo los directorios y archivos que había en la misma ruta?
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Re: Cómo ver directorios

Notapor explorer » 2010-03-07 15:23 @682

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 24 invitados

cron