next up previous index
Siguiente: Manejo de directorios Subir: Operaciones con archivos y directorios Anterior: Operaciones con archivos y directorios   Índice de Materias

Manejo de archivos

En Perl los archivos se manejan como en C, asignando un descriptor de archivo (filehandle) a cada archivo que se abre, que usaremos para manipular su contenido y finalmente cerrarlo.

Si queremos manejar el fichero fichero.txt haríamos:

open(MIFICH,"fichero.txt");   # abrimos un fichero existente para lectura 
                              # y le asignamos el descriptor MIFICH

open(MIFICH,">fichero.txt");  # creamos un nuevo fichero y le asignamos 
                              # el descriptor MIFICH

open(MIFICH,">>fichero.txt"); # abrimos un fichero existente para añadir
                              # contenido al final, conservando el contenido 
                              # original, y le asignamos el descriptor MIFICH

close(MIFICH);                # así cerramos el archivo en cualquier caso 

Una versión más segura hubiera sido:
open(MIFICH,"fichero.txt") || die "lo siento, no puedo encontrar fichero.txt\n";

Para leer un archivo normalmente se usa un bucle while:

open(MIFICH,"fichero.txt")|| die "lo siento, no puedo encontrar fichero.txt\n";   

while(<MIFICH>)               # significa: para cada línea ejecuta el bloque de código 
{                             # entre los corchetes

	print $_;                  # la variable especial $_ contiene la línea actual

	# ahora podríamos usar expresiones regulares para procesar esta línea de texto
}                          
    
close(MIFICH);

Para escribir en un fichero que acabamos de abrir:

open(MIFICH,">fichero.txt")|| die "lo siento, no puedo crear fichero.txt\n";   

print MIFICH "Una línea dentro del archivo\n";
    
close(MIFICH);

Cuando usamos la función print sin especificar un descriptor de archivo, como hemos hecho en varios ejemplos hasta ahora, en realidad estamos escribiendo al archivo de salida por defecto, llamado STDOUT. De la misma manera podemos acceder al teclado, el archivo de entrada por defecto, por medio de <STDIN>.

Por otro lado, existen en Perl operadores especiales para operar sobre ficheros (filetest operators) que pueden ser muy útiles (guía de referencia de Perl):

-r -w -x  # comprueba si hay permiso para leer, escribir o ejecutar un archivo 
-e -z     # comprueba si el archivo existe / tiene tamaño nulo
-s        # compruebe si el archivo tiene tamaño no nulo y devuelve el tamaño
-f -d     # comprueba si el archivo es un fichero / es un directorio

Ejemplo de uso:
if(-r 'mifichero.txt')
{
	# abro y leo el archivo
}

Hay toda una batería de funciones específicas que podéis consultar en la guía de referencia de Perl, pero creo que estas son las esenciales.


next up previous index
Siguiente: Manejo de directorios Subir: Operaciones con archivos y directorios Anterior: Operaciones con archivos y directorios   Índice de Materias
Bruno Contreras Moreira 2007-06-15