#!/bin/perl -w use strict; use XML::Checker::Parser; $/=''; # records are now separated by an empty line # first parse, a valid document my $doc1=; my $p= new XML::Checker::Parser; eval { local $XML::Checker::FAIL= \&my_fail; $p->parse( $doc1); }; if( $@) { print "parse 1 failed: $@\n"; } else { print "parse 1 OK\n"; } # second parse, an invalid document my $doc2=; $p= new XML::Checker::Parser; eval { local $XML::Checker::FAIL= \&my_fail; $p->parse( $doc2); }; if( $@) { print "parse 2 failed: $@\n"; } else { print "parse 2 OK\n"; } # gets an error and dies after creating the error message sub my_fail { my ($code, $msg, %context)= @_; die " error $code ($msg) at line $context{line}, column $context{column}"; } __DATA__ ]> foobar ]> toto not empty foobar