Sin
algo que manipular, lo único que has hecho el día de hoy es
perder tu tiempo. ¿Así es que como le hace para manipular la
información? usando la maravilla llamada input-output. Hay dos
formas de input y output: input-output del usuario y el
input-output usando archivos.
El input del usuario es cuando el usuario explícitamente le
dice al script que haga algo. El output es cuando el script
habla directamente con el usuario. Esto se hace mediante el
input y el output standard. El input es recibido leyendo el
archivo, el archivo manejado. A pesar de que el input standard
no es un archivo. Verás a lo que me refiero cuando digo el
archivo de input-output. La entrada input se lee de la
siguiente manera:
$usersaid = <STDIN>;
Los manejadores de archivos son siempre
escritos con letras mayúsculas para poder ser fácilmente
identificables. Mi fabuloso editor Evany preguntó si tenía
algo que ver con amor. Lo primero que pensé fue, "Demonios,
¿está sugiriendo que estoy pasado de peso?" Pero
afortunadamente, no tiene nada que ver con amor. Los
manejadores de archivos son la representación en un script de
un archivo abierto. El standard input y el output son siempre
considerados abiertos, así que no necesitas abrir o cerrarlos
como los archivos regulares que te mostraré en un minuto. La
sentencia $stuff = <INPUT>; leerá una línea de
entrada en la variable $stuff del archivo manejador
INPUT. La línea anterior presentará al usuario una
línea para ingresar algo. Después lo que sea que haya sido
metido será guardado en la variable $usersaid.
El comando print que has visto que lo he usado en ejemplos
anteriores es el método standard de sacar información. El
comando print es puesto como default para imprimir el standard
output, así que no necesitas especificarlo con otros
manejadores de archivos. Para imprimir el input del usuario en
la pantalla, usarás:
print "$usersaid";
Con esto en mente, puedes poner junto un
bonito juego de adivinar:
#!/usr/local/bin/perl
print "\nIntroduzca un número, por favor: ";
$guess = <STDIN>;
while ($guess != 20) {
print "\nMal! No le atinó! Imagine otra vez!";
$guess = <STDIN>;
}
print "Diantres! Le atinó!";
Usando el loop while, probamos la entrada
del usuario $guess y seguimos en el loop hasta que le
atinó. Y creanme, ¡esto no es lo mas irritante que puede
hacer! Para asegurarte que este dispositivo tortura es bueno y
fácil de leer para su víctima, usa algunos cambios de línea
con \n, que es el caracter que hace un nueva línea en
Unix.
Puedes hacer input y output a tus archivos con solo unos
pasos mas. Primero debes de abrir el archivo, similar a como
debes de abrir una lata de pepinillos. Como yo, siempre le
tendrás que dar un nombre a cada lata. Así la buscas en el
lugar adecuado en el refrigerador, mediante su nombre. Así que
piensa en un descriptor para tu archivo, pon el path (ruta)
del archivo y usa el comando open. Aquí está como:
open (NOMBRES, "/usr/people/ferm/names.txt");
Una vez que el archivo está abierto, puedes
leer una línea del archivo a la vez (de la misma manera que lo
hacías con el usuario) haciendo los siguiente ...
$fileinput = <NOMBRES>;
... y asignándoselo a una variable escalar.
O puedes leer todo el archivo en un arreglo, en cada localidad
estará cada línea:
@fileinput = <NOMBRES>;
¿Estás conmigo, hasta aquí? El archivo
input debe ser abierto antes. Después leer una línea a la vez,
o todas al mismo tiempo. Después de que ya tienes la
información, ten la responsabilidad de cerrar el archivo. Y
esto nos lleva a la Regla #7.
Regla #7: Dices que no puedes escribir y leer un
archivo al mismo tiempo. El cierre se hace de la siguiente
manera:
close (NOMBRES);
Hay dos formas de escribir en un archivo: escribiendo y
agregando. Escribiendo borra el contenido de todo el archivo y
escribe sobre el archivo. O si el archivo no existe, crea un
archivo en el cual poner la información. Agregando, agrega la
información al final del archivo existente.
Es como esto: es como tener a una persona muerta llamada
Jerry. Si ya existe un Jerry en el cementerio, saca al viejo
Jerry y mete al nuevo. O bien puede hacer un nuevo agujero si
es que no existe. Agregando es como tener a los dos Jerrys en
el mismo agujero.
Escribiendo:
open (OUTFILE, ">/usr/people/ferm/perllog.txt");
Agregando:
open (OUTFILE, ">>/usr/people/ferm/perllog.txt");
Una vez que decides como quieres escribir
en un archivo, necesitas imprimir el manejador del archivo. Es
como imprimir el output standard, excepto que especifica
explícitamente donde quieres imprimir usando el manejador del
archivo en medio del print y de lo que quieres
escribir:
print OUTFILE "Aquí hay una línea de salida";
Y no olvides cerrar ese archivo!