use XML::Filter::Dispatcher qw ( :all ); use XML::SAX::Machines qw( Pipeline ); sub run { Pipeline( shift )->parse_string( < Bully Klutz Middleman Fool XML_END my $count; run( XML::Filter::Dispatcher->new( Rules => [ 'stooge' => sub { ++$count }, 'string( stooges/stooge/attitude )' => sub { print xvalue(),"\n"; }, ], ) );