Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
Supongamos que tengo una lista de términos de longitud variable, cada uno de los cuales consta de un prefijo y un sufijo separados por un carácter determinado, que es lo único común a todos los elementos de la lista.
Imaginemos que tuviera éste aspecto:
Using perl Syntax Highlighting
my @arreglo = ('lanza_rote','for_mentera','i_biza');
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
donde todo lo que está antes de "_" es el prefijo, y lo que está después el sufijo.
Pues bien, quiero usar el operador de substitución sobre todos los elementos del arreglo, cosa que hago con algo como:
Using perl Syntax Highlighting
Hasta ahí, nada raro. Sin embargo quiero ejecutar la substitución sólo sobre una parte de cada elemento y preservar la otra, es decir, la idea sería:
Sustituye "a" por "e" pero solamente si está antes de "_".
Mi primera idea fue dividir cada elemento en dos:
Using perl Syntax Highlighting
y trabajar sólo sobre el primero, pero al imprimir @arreglo tras la sustitución obtengo:
1327
Es decir, me aplana la lista a un escalar y entonces al aplicar s// lo que obtengo es el número de veces que ocurre la substitución.
Como el número de caracteres y la posición del separador no son constantes no puedo usar substr() tampoco.
Puedo solucionarlo fácilmente con sed, o perl -e o esquivar el problema con otro enfoque (que presenta sus propios problemas) pero me gustaría saber la manera de incluir la solución en mi programa de Perl (seguramente será muy evidente una vez dicho, pero hoy no estoy inspirado, está claro).
Y esa es la primera duda, la segunda, si no cae el fin de semana ya irá en su propio hilo.