chdir
nos permite cambiar de directorio
dentro de la jerarquía de directorios. Estudie el siguiente ejemplo:
> cat chdir.pl #!/usr/bin/perl -w my $directory = shift; chdir $directory or die "no encuentro $directory: $!"; my @files = `ls -a`; my $i = 1; for (@files) { chop; printf "$_\t"; print "\n" if ($i++ % 5 == 0); } print "\n"; > chdir.pl '/tmp/' . .. .301.2112f1 .ICE-unix .X0-lock .X11-unix .fam_socket .famwe4uVt .famztg4KC .font-unix jtxttst.pdf kde-casiano ksocket-casiano magicbM4Uda mcop-casiano node26.html node26_files node27.html node27_files plhtml session_mm_apache0.sem ssh-XXPTlSpX webeqman.pdfOtra forma de manipular un directorio es mediante el uso de un directory handle o manipulador de directorio. Podemos abrirlo con
opendir
, leer del mismo
el siguiente nombre de fichero mediante readdir
y cerrarlo con closedir
.
Véase el ejemplo:
> cat dirhandles.pl #!/usr/bin/perl -w my $directory = shift; opendir DH, $directory or die "No encuentro $directory: $!"; $i = 1; foreach $file (readdir DH) { printf "$file\t"; print "\n" if ($i++ % 5 == 0); } closedir DH; print "\n"; > dirhandles.pl /tmp . .. .font-unix session_mm_apache0.sem .X11-unix ssh-XXPTlSpX .X0-lock kde-casiano ksocket-casiano .ICE-unix .fam_socket .famwe4uVt mcop-casiano .famztg4KC .301.2112f1 node26_files node26.html webeqman.pdf jtxttst.pdf node27_files node27.html plhtml magicbM4UdaObserve como en la salida producida los ficheros no parecen seguir un orden especial. Los nombres devueltos por
readdir
no contienen
el camino, sólo el nombre.
La tabla 2.3 recoge de manera sucinta algunos otros operadores para la manipulación de ficheros y directorios.
Para saber mas, lee con detalle la documentación
de los módulos File::Basename y File::Spec.
Usa para ello el comando man File::Basename
o bien
perldoc File::Basename
.
DB<1> use File::Basename DB<2> @a = fileparse("/home/casiano/Lperl/src/dbm.pl") DB<3> x @a 0 'dbm.pl' 1 '/home/casiano/Lperl/src/' 2 undef