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 agregar 
                              # 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 linea ejecuta el bloque de codigo 
{                             # entre los corchetes

	print $_;                  # la variable especial $_ contiene la linea actual

	# ahora podriamos usar expresiones regulares para procesar esta linea 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 linea 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 0 bytes 
-s        # compruebe si el archivo tiene tamagno no nulo y devuelve el tamagno
-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.

Bruno Contreras-Moreira
http://www.eead.csic.es/compbio