use HTML::TokeParser::Simple; my $parser = HTML::TokeParser::Simple->new(\$html); my $new_html = ''; while (my $token = $parser->get_token) { my $text = $token->as_is; $new_html .= $token->is_text ? munge_text($text) : $text; } print $new_html; sub munge_text { # put your text munging stuff here }