2012-05-29 16 views

Respuesta

5

Probablemente la función map es un mejor ajuste para lo que quieres. Usted está buscando algo similar a la (no probado) siguiente código:

@substrings = map { /^test-results(.*)/ ? $1 :() } @{ $arrayref }; 
+0

gracias por la útil herramienta de mapa ... –

+2

Nunca use '$ 1' y amigos fuera de un condicional. Las capturas son del último partido exitoso. Mejor sería '@substrings = map {/^test-results(.*)/? $ 1:()} @ {$ arrayref}; '. –

+0

@Greg: ¡Gracias! Había asumido que, por supuesto, todo coincidiría, potencialmente bastante incorrecto. Reemplazado. :) – sarnold

8

En el contexto de lista, un partido de expresiones regulares devuelve una lista de lo que sus capturas igualados, así que todo lo que necesita es:

@substrings = map /^test-results(.*)/, @$array; 
+0

+1 'map' FTW! Que tal @ikegami! – Jess

Cuestiones relacionadas