Perl MozRepl清理问题

时间:2010-10-27 16:32:02

标签: perl firefox mechanize www-mechanize

我正在编写一个网络抓取工具,我一直在使用WWW :: Mechanize :: Firefox来浏览某些页面(对于我使用WWW :: Mechanize的其他页面),这些页面在页面加载后继续加载内容我已经从来没有遇到过这个问题。

昨天我在脚本中添加了DBI和DBD :: mysql,添加了将数据导出到数据库的查询(这很有效),但突然MozRepl开始提出这个错误:

(in cleanup) Can't call method "execute" on an undefined value at /Library/Perl/5.10.0/MozRepl.pm line 372 during global destruction.
(in cleanup) Can't call method "execute" on an undefined value at /Library/Perl/5.10.0/MozRepl.pm line 372 during global destruction.

并在1个周期后终止脚本(它应该运行直到它到达特定文本文件的末尾,而不是它)。

我没有触及脚本的这一部分(不需要将db与这些页面一起使用),至少是心甘情愿。我检查了一个文件比较应用程序,无法解决任何问题。

发布代码可能很棘手,而且很长,而且我不知道问题可能在哪里。

编辑

有时它也会出现此错误,而不是之前的错误:

(in cleanup) Can't call method "cmd" on an undefined value at /Library/Perl/5.10.0/MozRepl/Client.pm line 186 during global destruction.

1 个答案:

答案 0 :(得分:1)

这与DBI或DBD :: mysql无关。这些消息无需担心,但我承认它们不美观。

消息来自剩余的Perl / Javascript对象在Perl Global Destruction期间以无序方式被破坏。如果要避免它们,请先破坏$mech对象 退出你的申请。

undef $mech;
# end of program

如果在程序关闭之前释放$mech对象,Perl / Javascript桥也可以有序地关闭。

另请注意,关于WWW :: Mechanize :: Firefox问题的首选论坛是http://perlmonks.org:)