next up previous contents index practicapracticaPP2moodleLHPmoodlepserratacpanmodulospauseperlgoogleetsiiullpcgull
Sig: El operador map Sup: Arrays y Listas Ant: Las declaraciones my y Err: Si hallas una errata ...


El operador grep

Utilice el operador grep para seleccionar una sublista de una lista dada. El operador tiene dos formas de uso. El siguiente ejemplo, muestra la primera forma de uso, crea la lista @withnumbers a partir de una lista @lines formada por aquellos elementos que contienen uno o más dígitos.
@withnumbers =  grep /\d+/, @lines;
grep recibe como primer argumento una expresión regular y como segundo una lista. En Perl las expresiones regulares se escriben entre barras de división. La notación \d casa con cualquier dígito decimal. Así pues el cierre positivo casará con cualquier número entero sin signo. Para saber más sobre expresiones regulares, estudie el capítulo 4.

El siguiente código guarda en $n_undef el número de items undef en el array v

$n_undef = grep { !defined($_)} @v;

Obsérvese que en esta segunda forma de uso no hay coma de separación entre el bloque y el array. En general, el primer argumento de grep es un bloque en el cual se utiliza $_ como referente a cada elemento de la lista, y se devuelve un valor lógico. Los restantes argumentos constituyen la lista de items sobre la que hay que buscar. El operador grep evalúa la expresión una vez para cada item en la lista, como si se tratara de un bucle foreach. Cuando el bloque esta constituido por una única expresión se puede escribir simplemente la expresión, separándola mediante una coma de la lista.

Ejercicio 1.7.3   Explique la interpretación que hace Perl de los siguientes fragmentos de código. Consulte 1.7.4 y el manual de Perl para entender el uso de la función grep:

@b = grep {not $_ % 5} @s;


next up previous contents index practicapracticaPP2moodleLHPmoodlepserratacpanmodulospauseperlgoogleetsiiullpcgull
Sig: El operador map Sup: Arrays y Listas Ant: Las declaraciones my y Err: Si hallas una errata ...
Casiano Rodríguez León
2006-02-21