No son caracteres raros. Son caracteres tildados codificados en iso-8859-1 pero escritos como
entidades HTML.
Necesitarás pasar todo el texto por algún módulo que convierta esas entidades a caracteres "normales". Así,
& #xe1; será una '
á'.
Eso lo puedes hacer con varios módulos. Por ejemplo,
HTML::Entities.
Para evitar lo del <span>, podríamos aceptar la idea de que lo que nos interesa es el texto que hay antes del primer '<'. Así, la expresión queda:
$code =~ /<div class=runseg><b>1 <\/b> (.*?): </Je, je... con Mojolicious sigue quedando genial
Using bash Syntax Highlighting
$ perl -Mojo -CS -E '$_ = g("http://es.thefreedictionary.com/persona")->dom->at("div[class=runseg]")->text; s/^\s+|\W+$//g; say'
Individuo de la especie humana
$ perl -Mojo -CS -E '$_ = g("http://es.thefreedictionary.com/auto")->dom->at("div[class=runseg]")->text; s/^\s+|\W+$//g; say'
Breve composición dramática en la que aparecen personajes bíblicos y alegóricos
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4