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