Estoy intentando crear un script que modifique ciertas características de un texto escrito en XML. El texto 'input' sería algo así:
Using xml Syntax Highlighting
- <etiqueta1>
- <etiqueta2>text texto texto. PS6000</etiqueta2>
- </etiqueta1>
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
El texto contenido en <etiqueta2> siempre termina con un código del tipo "PS + cuatro dígitos" (por ejemplo, PS6000).
Lo que necesito es un script que convierta el texto 'input' en el siguiente texto 'output':
Using xml Syntax Highlighting
- <etiqueta1 n="PS6000">
- <etiqueta2>text texto texto. PS6000</etiqueta2>
- </etiqueta1>
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
Es decir, un script que reconozca el código que aparece al final de <etiqueta2> y lo repita como valor del atributo "n" dentro de <etiqueta1>.
Concretamente, lo que no sé es cómo decir en Perl que si encuentra determinada cadena la imprima en un lugar determinado. Mi propuesta:
Using perl Syntax Highlighting
- use warnings;
- use strict;
- my $filename = shift;
- open F, $filename or die "Usa: $0 FILENAME\n";
- while (<F>) {
- if (/(PS\d\d\d\d)<\/etiqueta2>/) {
- print $1;
- } # si encuentra "PS + cuatro dígitos + </etiqueta2>" imprima "PS + cuatro dígitos"
- }
- close F;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4