Bienvenido a los foros de Perl en español, millen.
¿Seguro que solo quitar los números? ¿No querrás también quitar el espacio en blanco que hay también?
Lo siguiente te puede servir:
Using perl Syntax Highlighting
for (@array) {
s/^\s*\d+\s+//;
}
Coloreado en 0.005 segundos, usando
GeSHi 1.0.8.4
Explicación:
- Hacemos un bucle por todos los elementos del @array
- Cada elemento se almacena en la variable "por defecto" $_ (aunque no la veamos), además, el elemento queda "enlazado" con $_, por lo que, todo cambio a $_ afectará al elemento del array
- Lo que hacemos es una operación de sustitución (s///). Como no decimos sobre qué, perl lo hará sobre $_ (aunque no lo veamos, ya que es la variable "por defecto" -para eso sirve-)
- La operación de sustitución es una expresión regular, con dos partes
- La primera parte es el patrón que tiene que localizar dentro del elemento. El patrón es ^\s*\d+\s+, que quiere decir: «busca al comienzo de la cadena (^) por cero o más espacios en blanco (\s*), seguidos por uno o más dígitos (\d+), seguidos por uno o más espacios en blanco (\s+)»
- Si el elemento contiene un conjunto de caracteres que coincide con el patrón anterior, se activa la sustitución, y lo que haya coincidido es sustituido por la segunda parte. En este caso, no hay nada (//), por lo que lo que ocurre es que estamos realmente eliminando lo que buscábamos
- El resultado de la sustitución queda en $_, pero es que, además, el elemento del @array es actualizado (una de las propiedades ocultas de los bucles for() de Perl), con lo que estaremos actualizando el propio @array (todo queda en casa).
También lo puedes hacer en una sola línea:
Using perl Syntax Highlighting
s/^\
s*\d+\
s+// for @array;Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4