#!/usr/bin/perl use warnings; use strict; use XML::LibXML; use Carp; use File::Find; use File::Spec::Functions qw( canonpath ); use XML::LibXML::Reader; my %hash; my @ARGV ="C:/Main"; die "Need directories\n" unless @ARGV; find( sub { return unless ( /(_service\.xml)$/ and -f ); extract_information(); return; }, @ARGV ); sub extract_information { my ($path $hash) = $_; if( my $reader = XML::LibXML::Reader->new( location => $path )){ while ( $reader->nextElement( 'Service' )) { my $elem = $reader->getAttribute( 'Id'); $reader->nextElement( 'Customermodules' ); my $elem1 = $reader->getAttribute( 'Service'); $reader->nextElement( 'Suppliermodules' ); my $elem2 = $reader->getAttribute('Service'); $hash->{$elem} = $elem1; push @{$hash{$elem}}, '$elem2'; } } return; } print my $num=keys%hash;