Tutorial de Perl: Pero ya puestos...

... se puede hacer de una forma más simple. Nuestro político se dio cuenta rápidamente que muchas de esas operaciones se pueden hacer en una sola línea, y así ahorra uno espacio en disco duro, que va caro. Por ejemplo, el programa congrep.pl


@zipi=<>;
grep( ( split(/ /) && print "Total parcial ",$total+=$_[$#_-2],"\n"),@zipi);

; en un par de líneas. En general, la función grep, que recuerda al grep del sistema operativo, pero no tiene mucho que ver con ella, sirve para procesar matrices enteras. Como primer argumente se le pasa una expresión, pero ya se ve que en perl el concepto de expresión es un poco amplio; de hecho, el programa anterior es uno de los ejemplos de programa críptico que los perl-hackers tanto conocemos y amamos.

Pero en fin, vamos a ello: la expresión, para empezar, está entre paréntesis; luego, consiste en dos partes separadas por &&; este operador nos garantiza el orden de evaluación, y además no evalúa la parte de la derecha si no ha podido ejecutarse la de la izquierda; en resumen, la expresión hace lo mismo que las dos líneas del interior del bucle anterior... Y, ¿qué hace grep, entonces? Simplemente, le asigna a $_ cada uno de los componentes de la matriz que se le pasa como segundo argumento, y crea otra lista que tiene como componentes aquellos para los cuales la expresión es verdadera. Por ejemplo, podemos crear a partir del anterior otro programa que imprima sólo los que hayan pagado por encima de una pasta determinada, y además los meta en una matriz (mailing.pl):

@zipi=<>;
@ricos=grep( split(/ /) && ($_[$#_-2] > 200000) , @zipi );
print @ricos;
  1. Hacer un programa que extraiga de un array todos aquellos elementos que aparezcan más de una vez, y los coloque en otro array. Hacerlo usando grep.
Ejercicios
Anterior: Purgando los pecados. Principal Siguiente: Regularizando la situación
Descargar el tutorial completo, en .zip y el en .tgz. También los ejemplos Tutorial completo, para imprimir
BibliografíaEnlacesPreguntas frecuentesContactar con el autor
 

Cuidado! Necesitas mas espacio para...
This banner was supplied by SAFE Audit