#!/usr/bin/perl package wanted; use strict; use warnings; use XML::Twig; use Text::CSV; use File::Find; use wanted; &wanted(); &newwanted(); my $FileResult = $ARGV[1] || 'result.txt'; my $FhResult; my $folder ='.'; my $twig2= XML::Twig->new( twig_handlers => { 'Parameter' => sub { my $attr_value = $_->{'att'}->{'value'} // 'fault'; print $FhResult $attr_value . ","; }, }, ); File::Find::find({wanted => \&wanted}, 'C:\Users\ADMIN\Documents'); exit; 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;