Tutorial de PERL en castellano : Pero ya puestos... |
Preguntas frecuentemente preguntadas Bibliografía. Recursos Internet Regularizando la situación Purgando los pecados. |
grep
... 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;
grep
.
[ Preguntas frecuentemente preguntadas] [ Bibliografía.] [ Recursos Internet] [ Regularizando la situación] [ Purgando los pecados.]