use XML::LibXML; local $/ = "::FILE::"; my $parser = XML::LibXML->new(); # $parser->recover(1); <-- turn on to "save" many bad docs. while ( my $xml = ) { chomp($xml); my $doc = eval { $parser->parse_string($xml) }; if ( $doc ) { print "File $. is valid.\n"; # Do whatever you want with your valid $doc here. } else { print "File $. is NOT valid.\n"; # Deal with bad docs here... } } __DATA__ Coyote, Ltd.
1313 Desert Road
Nowheresville AZ 90210
Acme Rocket Jet Pack 1 Roadrunner Chow 10
::FILE:: Coyote, Ltd.
1313 Desert Road
Nowheresville AZ 90210
Acme Rocket Jet Pack 1 Roadrunner Chow 10