my @xml_files = glob( '*xml' ); #say for @xml_files; my @bak_files = glob( '*bak' ); #say for @bak_files; __END__ These would be the files: file_01.xml file_02.xml file_03.xml file_01.xml.bak file_02.xml.bak file_03.xml.bak #### use 5.018; use strict; use warnings; use Data::Dumper; use File::Glob; use List::Compare; use Array::Diff; use Array::Compare; #Separating xml and backup files my @xml_files = glob( '*xml' ); #say for @xml_files; my @bak_files = glob( '*bak' ); #say for @bak_files; #Show differences between file_01.xml and file_01.xml.bak, etc... my $diff_arrays = Array::Diff -> diff( \@xml_files, \@bak_files ); my $count = $diff_arrays -> count; my $added = $diff_arrays -> added; my $deleted = $diff_arrays -> deleted; #say $deleted; #Doing the same thing with Array::Compare my $compared = Array::Compare->new(DefFull => 1); my $differences = $compared -> full_compare(\@xml_files, \@bak_files); # Full comparison say for $differences; __END__ my $are_equal = compare_arrays( \@xml_files, \@bak_files ); sub compare_arrays{ my( $first, $second ) = @_; # any array used by code or cmd return 0 unless @$first == @$second; for ( my $i = 0, $i < $first, $i++ ){ return 0 if $first -> [$i] ne $second -> [$i]; } return 1; } ######################################################################## if (compare ( glob( *bak, *xml) ) == 0) { print "They're equal\n"; } ######################################################################### foreach my $file( @files ){ if (compare ( glob(*.bak, *.xml) ) == 0) { print "They're equal\n"; } } my @files = $ARGV[0]; ######################################################################### foreach my $element( @xml_files ){ if ( $element ~~ $bak_files[$counter] ){ say "equal!!!"; } else { say "not equal!!!"; say $element; } $counter++; }