next up previous contents index practicapracticaPP2moodleLHPmoodlepserratacpanmodulospauseperlgoogleetsiiullpcgull
Sig: Acceso Mediante glob Sup: Directorios Ant: Directorios Err: Si hallas una errata ...

Acceso mediante Operadores

El operador 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.pdf
Otra 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  magicbM4Uda
Observe 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.




Tabla 2.3: Comandos para el manejo de directorios
rename "/tmp/old", "/tmp/new" Renombra un fichero existente
unlink "one", "two", "three" Similar a rm one two three
link "one", "two" Similar a ln one two
symlink "one", "two" Similar a ln -s one two
mkdir "one" Equivalente a mkdir one
rmdir "one" Suprime el directorio one
chmod 0755, "one", "two" Cambia los permisos
chown $uid, $gid, glob "*.o" Cambia propietario y grupo
getpwnam "casiano" devuelve el uid del usuario casiano
getgrnam "users" devuelve el gid del grupo users


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


next up previous contents index practicapracticaPP2moodleLHPmoodlepserratacpanmodulospauseperlgoogleetsiiullpcgull
Sig: Acceso Mediante glob Sup: Directorios Ant: Directorios Err: Si hallas una errata ...
Casiano Rodríguez León
2006-02-21