Perl Невозможно вызвать метод "parse_html_string" или ссылку unbless - PullRequest
0 голосов
/ 08 июля 2011

Я пытаюсь использовать модуль HTML :: Grabber для разбора HTML в Perl. Он работает, когда я просто использую его в своем основном процессе, но выдает ошибку, когда я пытаюсь использовать его с многопоточностью.

В частности, я получил эту ошибку,

 Thread 1 terminated abnormally: Can't call method "parse_html_string" 
 on unblessed reference at /usr/local/ActivePerl-5.10/site/lib/HTML/Grabber.pm line 79.

где создание объекта Grabber.

$mech->get($link);
$dom = HTML::Grabber->new(html => $mech->content); #at this point

Есть идеи, как решить эту странную проблему?

1 Ответ

1 голос
/ 08 июля 2011

Метод parse_html_string вызывается для объекта XML :: LibXML синтаксического анализатора.

XML::LibXML, кажется, имеет смешанную поддержку для потоков:

Вероятно, HTML::Grabber создает объект синтаксического анализа, когда он импортируется вашим сценарием в основной поток. Затем вы создаете дочерний поток, и поскольку XML::LibXML не клонируется между потоками, объект исчезает. Вам нужно будет выполнить загрузку во время выполнения HTML::Grabber с require в потоке после его порождения.

Если это не так, вам придется свести вашу проблему к небольшому примеру и выложить здесь код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...