
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.
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;
}
|
|