Yo haría lo siguiente: ir almacenando la información en un
hash de
array, por todos los archivos xml, y una vez leídos todos, grabar el resultado en la hoja de cálculo.
Las claves del
hash serán las INITURL, mientras que los valores son
array que almacenan todos los TEST3 correspondientes a ese INITURL. De esa manera, si llega algún archivo xml con un INITURL ya visto, sus TEST3 se van agregando al final de los TEST3 anteriores.
Algo así:
Using perl Syntax Highlighting
#!/usr/bin/env perl
use v5.14;
use XML::Simple;
my $xml_simple = new XML::Simple( KeyAttr => [] );
my @files = <code_32148*.xml>;
my %url;
foreach my $file (@files) {
my $xml = $xml_simple->XMLin($file);
my $initurl = $xml->{Scan}->{INITURL};
for my $test3 ( @{ $xml->{Scan}->{WEBS}->{TEST2}->{TEST3} } ) {
push @{$url{$initurl}}, $test3->{TODASLASURL};
}
}
use Data::Dumper::Simple;
say Dumper %url;
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Using text Syntax Highlighting
%url = (
'10.10.10.16' => [
'http://10.10.10.16/',
'http://10.10.10.16/index.html'
],
'10.10.10.15' => [
'http://10.10.10.15/',
'http://10.10.10.15/index.html'
],
'10.10.10.17' => [
'http://10.10.10.17/',
'http://10.10.10.17/index.html',
'http://10.10.10.17/index.html'
]
);
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
Ya solo quedaría volcar la información a la hoja de cálculo, recorriendo la información de %url.