0

私は Web クローラーをコーディングしており、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サイクル後にスクリプトを終了します(特定のテキストファイルの最後に到達するまで実行する必要がありますが、そうではありません)。

少なくとも喜んで、スクリプトのこの部分には何も触れていません (これらのページでデータベースを使用する必要はありません)。ファイル比較アプリで確認しましたが、何も解決しませんでした。

コードを投稿するのは難しいかもしれません。かなり長く、問題がどこにあるのかわかりません。

編集

前のエラーの代わりに次のエラーが発生することもあります。

(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.
4

1 に答える 1

1

これは DBI や DBD::mysql とは関係ありません。メッセージは気にする必要はありませんが、見苦しいことは認めます。

Perl Global Destruction 中に残りの Perl/Javascript オブジェクトが順不同で破棄されると、メッセージが表示されます。それらを回避したい場合は$mech、アプリケーションを終了する前にオブジェクトを破棄してください。

undef $mech;
# end of program

プログラムがシャットダウンされる前にオブジェクトが解放された場合、Perl/Javascript ブリッジも正常に$mechシャットダウンできます。

また、WWW::Mechanize::Firefox に関する質問の優先フォーラムはhttp://perlmonks.orgです:)

于 2010-10-28T08:03:44.287 に答える