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
3.
El siguiente código corresponde a la segunda forma de uso:
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.
@b = grep {not $_ % 5} @s;
Casiano Rodríguez León