Я использую модуль Perl HTML::PullParser
. Я заметил, что иногда он разбивает текстовый элемент (насколько я могу судить) случайным образом.
Например, если у меня есть html-файл test.html
с содержимым
<html>
...
<FONT STYLE="font-family:Times New Roman" SIZE="2">THE QUICK BROWN FOX</FONT>
...
</html>
И мой код perl выглядит примерно так
my $html = HTML::PullParser->new(file => 'test.html', text => '"T", text');
while (my $token = $html->get_token) {
print "$$token[1]\n";
}
Потом иногда я возвращаюсь
THE QUICK BROWN FOX # correctly parsed
Но в других случаях я получаю
THE QUICK
BROWN FOX
где текстовый элемент анализируется на два отдельных токена. Однако в других случаях, в зависимости от другого содержимого html-файла, я получаю
THE QUICK BROWN
FOX
где точка разрыва другая. Такое поведение крайне раздражает. И я изо всех сил старался изолировать проблему. Похоже, это зависит от всего файла (т.е. если я удалю остальную часть файла, чтобы остался только этот элемент, тогда все в порядке). Однако я не могу определить, какая часть остальной части файла вызвала это. Интересно, есть ли у кого-нибудь подобный опыт и кто знает, как обойти эту проблему? Спасибо!!
ОБНОВЛЕНИЕ: появление этого ошибочного поведения также НЕ зависит от одного раздела html-кода в другом месте файла. Мне удалось изолировать два раздела html-кодов перед этим текстовым элементом — когда они оба присутствуют, возникает эта ошибка. Но когда одно присутствует без другого, эта проблема исчезает... Я совершенно сбит с толку и раздражен.