Mis disculpas. La verdad es que mi explicación no fue muy clara. Lo vuelvo a intentar.
Tengo dos tipos de archivos de entrada. Los archivos del tipo1 se llaman de la siguiente manera:
0001_header.xml
0002_header.xml
0003_header.xml
...Los archivos del tipo2 se llaman de la siguiente manera:
0001_text.xml
0002_text.xml
0003_text.xml
...De los archivos tipo1 necesito imprimir el contenido de la etiqueta
<title></title>.
De los archivos tipo2 necesito varias cosas, pero para simplificar diremos que necesito imprimir el contenido de la etiqueta
<text></text>.
Todos estos archivos están guardados en una carpeta llamada input/.
El objetivo es que en la carpeta llamada output/ se creen archivos .txt (0001.txt, 0002.txt, 0003.txt, ...) que muestren el resultado conjunto de ambas impresiones. Por ejemplo:
Imaginemos que en el archivo "0001_header.xml" se incluye la siguiente información:
<title>Esto es un título</title>Imaginemos que en el archivo "0001_text.xml" se incluye la siguiente información:
<text>Esto es texto</text>El archivo creado 0001.txt debería contener:
TITULO: esto es un título
TEXTO: Esto es textoPropuesta 1:
Using perl Syntax Highlighting
use strict;
use warnings;
opendir IN, 'input';
my @lines1 = grep { /header.xml$/ } readdir IN;
closedir IN;
for my $lines1 (@lines1) {
open IN, '<', "input/$lines1" || next;
open OUT, '>', "output/$lines1" || die "can't open file output/$lines1";
print OUT "TITULO: ";
while(<IN>) {
if (/<title>(.+?)<\/title>/) {print OUT "$1\n"};
}
close OUT;
close IN;
}
opendir IN, 'input';
my @lines2 = grep { /text.xml$/ } readdir IN;
closedir IN;
for my $lines2 (@lines2) {
open IN, '<', "input/$lines2" || next;
open OUT, '>', "output/$lines2" || die "can't open file output/$lines2";
print OUT "TEXTO: ";
while(<IN>) {
if (/<text>(.+?)<\/text>/) {print OUT "$1\n"};
}
close OUT;
close IN;
}
Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
En este caso no sé cómo hacer que los archivos de salida creados sean txt y que combinen en un único txt ambas modificaciones (ambos print).
Otra opción que probé fue crear una variable que incluya el contenido de las dos entradas, para poder trabajar a partir de ahí:
Using perl Syntax Highlighting
use strict;
use warnings;
my $content;
local $/ = undef;
open(IN, "<0001_header.xml");
$content = <IN>;
close(IN);
open(IN, "<0001_text.xml");
$content .= <IN>;
close(IN);
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Pero en este caso no sé cómo aplicar el
script a varios archivos a la vez para crear los respectivos .txt.