Tutorial de PERL en castellano : Todo bajo control |
Preguntas frecuentemente preguntadas Bibliografía. Recursos Internet Decodificando El cofre de la sabiduría |
Cuando nuestro político corrupto descubre que UNIX tiene ya preprogramadas
muchas de las funciones que le hacía el militante de base, lo despide
y decide usar esos programas de UNIX desde, por supuesto, un programa en
PERL; además, decide tirar Windows95 a la basura e
instalalarse Linux. Por ejemplo, para contar las palabras que hay en un fichero basta
con usar la orden wc
de UNIX. Pero si se presenta
en modo bonito, puede salir el siguiente programa, llamado wc.pl
#!/usr/bin/perl
while (<*>) {
($zipi, $lineas, $palabras, $bytes, $nombref) = split(/\s+/,`wc $_`);
print "El fichero $nombref tiene $palabras palabras y $lineas lineas\n";
}
La primera línea del bucle usa una bonita capacidad de PERL,
llamada globbing o generalización. Lo que hace es que, si se pone algún
comodín de ficheros del tipo *
repetirá
el bucle para cada fichero que cumpla ese patrón, asignando el nombre
del fichero a la variable por defecto. Ese nombre se le pasa al comando
wc, usando ``
, es decir, comillas invertidas,
que ejecutan un comando en UNIX devolviendo su salida estándar.
Esa orden completa agarra la salida del comando, del tipo
lineas palabras bytes nombre del fichero
y la parte en sus componentes. Como las diversas palabras están
separadas por varios espacios o tabuladores, se una el patrón \s+
.
Al principio de la línea hay una serie de espacios, por lo que el
primer componente devuelto no tendrá nada.
Hay otra forma diferente de controlar programas en UNIX, esta vez interactivamente,
usando los denominados pipes o tuberías,
que se suelen indicar con el carácter |.
Por
ejemplo, la orden open( FICHERO, "|pepe" ),
abre una tubería a la orden pepe
, que
a partir de entonces ejecutará los comandos que reciba del programa
en PERL, ya que éste programa le suministrará la entrada
estándar. Esto se puede usar de la siguiente forma (si se dispone
del programa gnuplot
):
open( GNU, "|gnuplot" ); print "Fichero a trazar? "; chop($fileN = <STDIN>); print GNU "plot \"$fileN\" with lines 1\n";
que
abrirá una tubería al programa y le enviará
la orden para trazar un fichero con líneas. Con este tipo de órdenes
y con gnuplot
, y con unas pocas ganas, se pueden
hacer animaciones. Sin embargo, hay que tener en cuenta que sólo
se podrá hacer con programas que acepten comandos por su entrada
estándar.
[ Preguntas frecuentemente preguntadas] [ Bibliografía.] [ Recursos Internet] [ Decodificando] [ El cofre de la sabiduría] |