lunes, 9 de septiembre de 2013

Tratamiento de archivos en Perl


En esta ocasión veremos como tratar archivos con perl. Para abrir un archivo se utiliza la función open, en su primer parametro va un nombre o filehandle con el cual podremos acceder a la información del archivo, en el segundo parámetro se indica la ruta. Para el tratamiento de archivos existe una serie de comandos que permiten indicar el tipo de permisos con el que accederemos al archivo ...


EntidadDefinición
< or rSólo lectura
> or wCrear, escritura y eliminar todo el contenido anterior
>> or aEscritura al final de fichero y crear si no existe
+< or r+Lectura y escritura
+> or w+Lectura, escritura, Crear si no existe y eliminar todo el contenido anterior
+>> or a+Lectura, escritura al final del fichero y eliminar todo el contenido anterior


En el siguiente ejemplo verás como crear un archivo, añadirle contenido y leerlo ...

#si utilizas '>>' abre el archivo o lo crea si no existe, si el archivo existe no elimina el contenido 
#que tenía anteriormente, añade el nuevo contenido al final del fichero.

#si utilizas '+>' abre el archivo o lo crea si no existe, si el archivo existe restaura el contenido con 
#el nuevo contenido añadido, eliminando el anterior, añade el nuevo contenido al final del fichero.

#puedes probar cambiando los permisos de >> a +> para ver los resultados.

#Si no existe crea un archivo llamado prueba.
open(ARCHIVO, ">> prueba.txt");

$escribe = "Estoy escribiendo en el archivo prueba \n";

print ARCHIVO $escribe;

$escribe = "estoy escribiendo otra vez \n";

#añade una nueva línea al final del fichero
print ARCHIVO $escribe;

#cierra el fichero
close(ARCHIVO);

#Lectura del archivo
#Para la lectura del archivo puedes utilizar tanto < como ningún argumento, es de sólo lectura.
open(ARCHIVO, "< prueba.txt");

$total_de_lineas=0;

print "::::::::::::::::::::CONTENIDO DEL ARCHIVO::::::::::::::::::::\n";
while()
{
#Imprime cada nueva línea
print $_;
$total_de_lineas++;
}
print "::::::::::::::::::::CONTENIDO DEL ARCHIVO::::::::::::::::::::\n";
#imprime el total de líneas del fichero
print "El total de lineas del archivo es: " . $total_de_lineas;

#cierra el archivo
close(ARCHIVO);