Capítulo 5

Manual de PERL

Sitio Web para conseguir PERL

CAPITULO 5

 


I. EL MANEJO DE ARCHIVOS

    Hasta este momento no hemos realizado ningún programa que dejase grabado en disco o que leyese desde éste ningún dato. En este capítulo nos vamos a centrar en los modos de lectura y/o escritura de ficheros o archivos, es decir, del tratamiento de datos grabados en un soporte magnético, generalmente el disco duro.

CREACIÓN DE FICHEROS

 Después de realizar cierto proceso con datos, tenemos que grabar estos para posteriormente usarlos. En este caso se nos presenta la necesidad de crear un archivo.

    Ej: Imaginemos una serie de datos (personas y edades) y queremos almacernarlos en un soporte magnético como puede un disquete o un disco duro. Necesitamos grabarlos, ya que, será necesario actualizar estos datos cada año, al menos.

# Introducimos los datos.
@datos=("Juan",22,"Pedro",18,"Carlos",33,"Rosa",31,"Isabel",25);

# Delimitamos los datos con comas.
@registro=join(",",@datos);

# Damos nombre logico EMPLEADOS y físico "empleados.txt" al archivo.
# Como vamos a crear el archivo por primera vez, usamos el signo de ">"
open (EMPLEADOS,">empleados.txt");

#Tomamos cada campo, uno por uno, y los grabamos en el archivo.
foreach $campo (@registro)
{
 print EMPLEADOS $campo;
}

# Fin de línea y nueva línea para un posible nuevo registro.
 print EMPLEADOS "\n";

# Cerramos el fichero abierto
close (EMPLEADOS);

 

Entrada directa desde el teclado ( I ).Si la entrada de datos hubiese sido desde la consola , la matriz @datos se igualaría a la entrada genérica en PERL, es decir, <STDIN>.Ej: @datos=<STDIN>;

# Indicamos cual será el caracter de fin de archivo
print "Al terminar de introducir los datos pulsar:\n";
print "Ctrl+D en Unix\n";
print "Ctrl+Z en MS-DOS\n";
print "---------------------------\n";

# Los datos introducidos mediante el teclado formarán una matriz
@datos=<STDIN>;

# Creamos el archivo.
open (EMPLEADOS,">empleado.txt");

# Grabamos el archivo con los datos
foreach $dato (@datos)
{
 print EMPLEADOS $dato;
}
# Cerramos el fichero abierto
close (EMPLEADOS);

Entrada directa desde el teclado ( II ).Otra variante de la entrada desde el teclado sería esta:

# Indicamos cual será el caracter de fin de archivo
print "Al terminar de introducir los datos pulsar:\n";
print "Ctrl+D en Unix\n";
print "Ctrl+Z en MS-DOS\n";
print "---------------------------\n";

# Abrimos un fichero que usa como entrada el teclado.
# Usamos un signo de guión "-" como representación del teclado
open (TECLADO,"-");

# Creamos el archivo.
open (EMPLEADOS,">empleado.txt");

# Los datos introducidos desde el teclado formarán una matriz
@datos=<TECLADO>;

# Grabamos el archivo con los datos
foreach $dato (@datos)
{
 print EMPLEADOS $dato;
}
# Cerramos los archivos abierto
close (TECLADO);
close (EMPLEADOS);

 
 

Si una vez creado el archivo, añadimos nuevos datos,  SÓLO hay que modificar esta línea en el programa anterior:

# Añadimos nuevos datos al fichero ya creado.
open (EMPLEADOS,">>empleado.txt");

Comprobamos que incluimos un signo ">" más a la  hora de hacer referencia al archivo "empleado.txt"
 
 
Metacaracteres Significado
> Nuevo...
>> Añadir a...

LECTURA DE FICHEROS

    Una vez que ya tenemos los datos grabados, será necesario en más de una ocasión su actualización, por lo que tendremos que leerlos.

# Podemos usar el signo "<" o ninguno delante del fichero, para lectura
open (EMPLEADOS,"empleados.txt");

#Añadimos cada línea de éste en la matriz.
@registros=<EMPLEADOS>;

# Mostramos los datos en pantalla
foreach $empleados (@registros)
{
 print $empleados;
}
# Cerramos el fichero abierto
close (EMPLEADOS);

La salida del programa sería todas la líneas o registros del archivo.


 

Leer un fichero pasado como parámetro desde la línea de comandos.
    Ej: Perl  leer.pl empleados.txt

    En estos casos dentro de la codificación de un programa en PERL, se utiliza "<>" como referencia
a nuestro archivo ,empleados.txt, que se escribe desde la línea de comandos.

# La matriz recoge las líneas leidas, del archivo, desde la línea de comandos
@lineas=<>;

# Mostramos los registros en pantalla.
foreach $registro (@lineas)
{
print $registro;
}
 


 
 
Página anterior
Inicio de página
Página siguiente