use strict; use warnings; use XML::SemanticDiff; my $x = XML::SemanticDiff->new; my @diffs = $x->compare( < abc def ghi EOXML_1 < abc 456 ghi EOXML_2 ); foreach my $change (@diffs) { print "$change->{message}\n\tin XPath context $change->{context}\n"; } __END__ Character differences in element 'secondTag'. in XPath context /top[1]/secondTag[1] Child element 'thirdTag' missing from element '/top[1]'. in XPath context /top[1] Rogue element 'lastTag' in element '/top[1]'. in XPath context /top[1]