#! /usr/bin/perl use strict; use warnings; use XML::Parser; { my $is_article = 0; sub handle_start { my ( $expat, $element, %attr ) = @_; if ( $element eq 'article' ) { $is_article = 1; } elsif ( $is_article ) { print $expat->original_string; } } sub handle_end { my ( $expat, $element, %attr ) = @_; if ( $element eq 'article' ) { $is_article = 0; } elsif ( $is_article ) { print $expat->original_string; } } sub handle_char { my ( $expat, $string ) = @_; #print $expat->original_string if $is_article; print $string if $is_article; } } my $x = XML::Parser->new(); $x->setHandlers( Start => \&handle_start, End => \&handle_end, Char => \&handle_char, ); $x->parse( *DATA ); __DATA__
Hello Foo World
Hello Bar World