• [^] # Re: perlmonks says

    Posté par . En réponse au message faire fonctioner Code sur plusieurs Fichiers se trouvant tous dans un dossier. Évalué à 1.

    Je ne peux pas t'aider sur Twig (il est minuit 15 chez moi, je dois aller au lit).
    Essaye ca:

    #!/usr/bin/perl 
    use strict;
    use warnings;
    use XML::Twig; 
    use Text::CSV; 
    use File::Find;
    my $FileResult = $ARGV[1] || 'result.csv'; 
    my $FhResult;
    my $folder ='.';
    my $twig2= XML::Twig->new( 
     twig_handlers => { 
     'Parameter' => sub { 
     my $attr_value = $_->{'att'}->{'value'} // 'fault'; 
     print $FhResult $attr_value . ",";
     },
     },
    );
    sub newwanted {
     my ($dev,$ino,$mode,$nlink,$uid,$gid,$name);
     (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &&
     -f _ &&
     /^.*\.xml\z/s
     && processXML($name);
    }
    sub processXML ($) {
     print $FhResult( (split('_', "\n$_",2))[0] . ',' ); 
     $twig2->parsefile($_);
    }
    open( $FhResult, '>', $FileResult ) or die("Unable to open file $FileResult\n$!");
    find({
     wanted => \&newwanted,
    }, $folder);
    close $FhResult;
    

    Ca retourne ceci dans results.csv chez moi:

    $ cat result.csv 
    4.xml,
    1.xml,
    3.xml,
    2.xml,