BEGIN { print "1..4\n"; } END { print "not ok 1\n" unless $loaded; } use XML::Parser; $loaded = 1; print "ok 1\n"; my $cmnt_count = 0; my $pi_count = 0; my $between_count = 0; my $authseen = 0; sub init { my $xp = shift; $xp->skip_until(1); # Skip through prolog } sub proc { $pi_count++; } sub cmnt { $cmnt_count++; } sub start { my ( $xp, $el ) = @_; my $ndx = $xp->element_index; if ( !$authseen and $el eq 'authlist' ) { $authseen = 1; $xp->skip_until(2000); } elsif ( $authseen and $ndx < 2000 ) { $between_count++; } } my $p = new XML::Parser( Handlers => { Init => \&init, Start => \&start, Comment => \&cmnt, Proc => \&proc } ); $p->parsefile('samples/REC-xml-19980210.xml'); print "not " if $between_count; print "ok 2\n"; print "not " if $pi_count; print "ok 3\n"; print "not " unless $cmnt_count == 5; print "ok 4\n";