use XML::Simple; use XML::SemanticDiff; $xml1 = new XML::Simple; $xml2 = new XML::Simple; $dirtoget1="folder1"; $dirtoget2="folder2"; opendir(IMD1, $dirtoget1) || die("Cannot open directory"); opendir(IMD2, $dirtoget2) || die("Cannot open directory"); while( ($filename1 = readdir(IMD1)) && ($filename2 = readdir(IMD2))) { $file =$xml1->XMLin("$filename1"); $file2 =$xml2->XMLin("$filename2"); my $diff = XML::SemanticDiff->new(); foreach my $change ($diff->compare($filename1, $filename2)) { print "$change->{message} in context $change->{context}\n"; } # or, if you want line numbers: my $diff = XML::SemanticDiff->new(keeplinenums => 1); foreach my $change ($diff->compare($file, $file2)) { print "$change->{message} (between lines $change->{startline} and $change->{endline})\n"; } print("$filename1\n"); print("$filename2\n"); print("\n \n \n \n"); } closedir(IMD1); closedir(IMD2);