Código Perl para se referir a múltiplos arquivos da mesma extensão (.xml)

0

Estou tentando analisar vários arquivos xml, mas estou um pouco preso a alguma coisa. A seção $twig->parsefile("output_1.xml"); do script abaixo funciona bem ao analisar o arquivo declarado. No entanto, gostaria de analisar todos os arquivos .xml no direcotry. Eu tentei escrever cada arquivo no código da seguinte forma:

$twig->parsefile("output_1.xml" "output_2.xml" "output_3.xml");

E eu também tentei usar um curinga como eu faria no bash assim:

$twig->parsefile("*.xml");

Mas nenhuma dessas tentativas funciona. Como posso alterar o script para que todos os arquivos .xml no diretório sejam analisados pelo script? Peço desculpas por minha falta de conhecimento, apenas comecei a usar o Perl.

#!/bin/perl -w

use strict;
use XML::Twig;

my $twig = XML::Twig->new(
   twig_handlers => {item => \&acct}
);
$twig->parsefile("output_1.xml");                              

sub acct {
    my ($t, $elt) = @_;

          for my $tag (qw(itemId title viewItemURL convertedCurrentPrice)) {
                    print $elt->field($tag), "\n";
                        }
                            print "\n";
                            print "\n";
                            }
    
por neilH 21.04.2016 / 21:18

1 resposta

2

Você pode enumerar o conteúdo do diretório da seguinte forma:

my @files = <*.xml>;    # or: my @files = </your/path/to/*.xml>;
foreach my $file (@files) {
    $twig->parsefile($file);
}
    
por 21.04.2016 / 22:04

Tags