Bien,primero que nada para abrir un archivo necesitamos decir la carpeta que vamos a usar,en este caso vamos a definir el usuario así:
my $user = getlogin();
Ahora el Directorio,por ejemplo nuestro Home:
my $dir = "/home/" . $user;
Ahora vamos a abrir el directorio con la función opendir:
Definimos una variable que usaremos para leer el directorio,en este caso $recorrer:
opendir(my $recorrer, $dir) || die "Error :( $! \n";
Ahora iniciamos un bucle while para que recorra el directorio,usando la variable que creamos al abrir el directorio:
while(readdir $recorrer) {
# Codigo
}
Cuando terminemos de recorrer y usar el directorio lo cerramos con el comando:
closedir $recorrer;
Eso es todo,al recorrer con un bucle while los archivos del directorio los guarda en su recorrido en la variable especial $_ ,veamos un ejemplo de como guardar los datos de un directorio en dos arrays:
#!/usr/bin/env perl
my $user = getlogin();
my $dir = "/home/" . $user;
my (@archivos,@dirs) = ((),()); # Creamos dos arrays vacios
opendir(my $recorrer, $dir) || die "Error :( $! \n";
while(readdir $recorrer)
{
if (-d $dir . "/" . $_) { # Vemos si es un directorio
push (@dirs,$_); # Si es asi llenamos el array de directorios
}
if (-f $dir . "/" . $_) { # Hacemos lo mismo con los archivos
push (@archivos,$_);
}
}
=pod
Aclaraciones
$dir . "/" . $_ # concatenamos los archivos del directorio para poder saber de que archivo trata
-d # Es para saber si es un directorio
-f # Es para saber si es un archivo
push # Añade un valor a un array
=cut
closedir $recorrer;
foreach my $files(@archivos) { # Recorremos los arrays
print "Archivos : $files\n";
}
foreach my $directorios(@dirs) {
print "Directorios : $directorios\n";
} # O hacemos lo que queramos con ellos
Otra forma de hacer esto es con el modulo DirHandle,veamos:
#!/usr/bin/perl
use DirHandle;
my $user = getlogin();
my (@archivos,@dirs) = ((),()); # Creamos dos arrays vacíos
my $dir = "/home/" . $user;
$directorio = DirHandle->new("$dir"); # Definimos directorio
while ($_ = $directorio->read) { # Lo leemos
if (-d $dir . "/" . $_) {
push (@dirs,$_);
}
if (-f $dir . "/" . $_) {
push (@archivos,$_);
}
}
undef $directorio; # Indefinidos el valor para cerrar el archivo
foreach my $files(@archivos) {
print "Archivos : $files\n";
}
foreach my $directorios(@dirs) {
print "Directorios : $directorios\n";
}
Bien,eso es todo,use foreach para recorrer el array,pero podemos usar for,while ademas de que podemos usar las funciones de array,pop,push,sort,etc.
Eso es todo :D
No hay comentarios.:
Publicar un comentario
Los comentarios serán revisados antes de ser publicados.