use HTML::TokeParser::Simple;
my $p = HTML::TokeParser::Simple->new( \$original_html );
my $new_html = '';
while ( my $token = $p->get_token ) {
unless ($token->is_text) {
$new_html .= $token->return_text;
}
else {
my $text = $token->return_text;
$text =~ s/foo/foo/g;
$new_html .= $text;
}
}