Tests sobre ficheros

Perl utiliza -e $filevar para comprobar la existencia de un fichero cuyo nombre es el guardado en la variable $filevar. Si el fichero existe el resultados es verdadero; en otro caso es falso. Por ejemplo:

$name = "index.html";
if (-e $name) {
    print "Ya existe un fichero denominado $name\n";
} else {
    print "No existe un fichero denominado $name\n";
}

He aqui otro ejemplo:

if (-e "index.html" && -e "index.cgi") {
    print "Encontrados.\n";
}

Existen otros operadores. Por ejemplo, -r $filevar es cierto si el fichero cuyo nombre se guarda en $filevar existe y es de lectura. Análogamente, -w $filevar comprueba si es de escritura.

print "Donde? ";
$filename = <STDIN>;
chomp $filename; 
if (-r $filename && -w $filename) {
        # El fichero existe y es de lectura y escritura 
        ...
}

La tabla 2.1 contiene algunos de los operadores mas importantes.


Tabla 2.1: Operadores de fichero y su significado
Fichero Significado
-r El fichero o directorio es legible
-w El fichero o directorio es de escritura
-e El fichero o directorio existe
-x El fichero es ejecutable
-z El fichero existe y tiene tamaño cero (Los directorios nunca tiene tamaño cero)
-s El fichero o directorio existe y tiene tamaño no nulo (el tamaño en bytes
-f La entrada es un fichero
-d La entrada es un directorio
-t isatty sobre el fichero es cierto (esto es, es un dispositivo de caracteres)
-T Fichero de texto
-B Fichero binario
-M Edad de modificación en días
-A Tiempo de acceso en días
-C Edad de modificación del Inode en días


Estos operadores pueden usarse indistintamente sobre filehandles o nombres de fichero. Por ejemplo:

if (-x SOMEFILE) {
        # SOMEFILE es ejecutable
}

Si no se especifica el nombre del fichero, el operador por defecto es la variable $_. Por ejemplo:

foreach (@some_list_of_filenames) {
        print "$_ es de lectura\n" if -r; # Lo mismo que -r $_
}

Casiano Rodríguez León
Licencia de Creative Commons
Principios de Programación Imperativa, Funcional y Orientada a Objetos Una Introducción en Perl/Una Introducción a Perl
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=43.
2012-06-19