use strict;
use warnings;
use HTML::Parser;
my $parser = HTML::Parser->new(api_version => 3);
$parser->handler(start => \&start, 'self,tagname,attr');
$parser->handler(text => \&text, 'self,dtext');
$parser->handler(end => \&end, 'self,tagname');
$parser->parse(q|foo|);
sub start {
my ($parser,$tag,$attr) = @_;
print "<$tag";
# we lose the original order of attribs, but we'll live ;)
print qq| $_="$attr->{$_}"| for keys %$attr;
print ">";
}
sub text {
my ($parser,$text,$attr) = @_;
$text =~ s/foo/bar/g;
print "$text";
}
sub end {
my ($parser,$tag) = @_;
print "$tag>";
}