use HTML::TreeBuilder; use HTML::FormatText; use Encode; sub HTML_to_text { my $content = shift; my $html = HTML::TreeBuilder->new; $content = '
' . $content . '' unless $content =~ m/]*>/i; $html->parse( decode("utf8", $content) ); # this is necessary otherwise UTF8 chars get hamburgered, my $formatter = HTML::FormatText->new; my $out = _trim($formatter->format($html)); # trim is a selective trimmer that preserves some kinds of whitespace, delete this if you don't need it. return $out; }