HTML :: PullParser divide el elemento de texto al azar

Estoy usando el módulo Perl HTML::PullParser . Noté que a veces divide un elemento de texto (hasta donde puedo decir) al azar.

Por ejemplo, si tengo un archivo html test.html con el contenido de

  ... THE QUICK BROWN FOX ...  

Y mi código perl se ve algo así como

 my $html = HTML::PullParser->new(file => 'test.html', text => '"T", text'); while (my $token = $html->get_token) { print "$$token[1]\n"; } 

Entonces a veces vuelvo

 THE QUICK BROWN FOX # correctly parsed 

Pero otras veces lo consigo

 THE QUICK BROWN FOX 

donde el elemento de texto se analiza en dos fichas separadas. Sin embargo, en otras ocasiones, dependiendo del otro contenido del archivo html, obtengo

 THE QUICK BROWN FOX 

donde el punto de ruptura es diferente Este comportamiento es extremadamente molesto. Y lo mejor que pude para aislar el problema. Parece que depende de la totalidad del archivo (es decir, si elimino el rest del archivo para dejar solo ese elemento, entonces está bien). Sin embargo, no puedo identificar qué parte del rest del archivo causó esto. ¿Se pregunta si alguien tuvo una experiencia similar y sabe cómo solucionar el problema? ¡¡Gracias!!

ACTUALIZACIÓN: la aparición de este comportamiento errante NO depende de una sola sección del código html en otra parte del archivo. Pude aislar dos secciones de códigos html antes de ese elemento de texto; cuando ambos están presentes, se produce este error. Pero cuando cualquiera de los dos está presente sin el otro, este problema desaparece … Estoy absolutamente confundido y molesto.

HTML :: PullParser es una subclase de HTML :: Parser. HTML :: Parser tiene un atributo de texto ininterrumpido que controla si distribuye eventos de texto lo antes posible, o si almacena el texto hasta que el analizador sepa que no habrá más texto. El valor predeterminado es generar nodos de texto tan pronto como sea posible. una llamada $p->unbroken_text(1) debería hacer que esté en búfer 🙂