2012-03-26 10 views
0

ファンこの初心者の質問には申し訳ありません WWW :: :: Firefoxの機械化:未開封ファイルハンドルに

を印刷する()を停止するデバッグ-試みを、私は私が知っておくべきことをGoogleで見つけることができません。私は、印刷を理解し、これを理解していない...

http://www.unifr.ch/sfm 
print() on closed filehandle OUTPUT at test_3.pl line 20, <INPUT> line 2. 
http://www.zug.phz.ch 

はよく....ずっとずっと下の

を参照してください - それは、これは何を意味するのでしょうか?

忍耐力に感謝します。

先頭から始める:このスクリプトを実行すると、ウェブサイトのスクリーンショットを作成するように書かれています。mozreplを起動して実行しています ここにはリクエストされたURLのファイルがあります。本当のリストの短い断片だけ - 実際のリストははるかに長いです。それは出力以上の3500行とURL

http://www.unifr.ch/sfm 
http://www.zug.phz.ch 
http://www.schwyz.phz.ch 
http://www.luzern.phz.ch 
http://www.schwyz.phz.ch 
http://www.phvs.ch 
http://www.phtg.ch 
http://www.phsg.ch 
http://www.phsh.ch 
http://www.phr.ch 
http://www.hepfr.ch/ 
http://www.phbern.ch 
http://www.ph-solothurn.ch 
http://www.pfh-gr.ch 
http://www.ma-shp.luzern.phz.ch 
http://www.heilpaedagogik.phbern.ch/ 

いただきました!奇妙にされて含まれています - 以下を参照してください... 質問:私は、スクリプト

を変更すればいいなぜ私GE以下の小さなスクリプトで出力!:

は/ usr/binに/ perlの

use strict; 
use warnings; 
use WWW::Mechanize::Firefox; 

my $mech = new WWW::Mechanize::Firefox(); 

open(INPUT, "<urls.txt") or die $!; 

while (<INPUT>) { 
     chomp; 
     print "$_\n"; 
     $mech->get($_); 
     my $png = $mech->content_as_png(); 
     my $name = "$_"; 
     $name =~s/^www\.//; 
     $name .= ".png"; 
     open(OUTPUT, ">$name"); 
     print OUTPUT $png; 
     sleep (5); 
} 

はここにも圧倒的な出力を参照してください - 私は、このような面白いOUを取得するためにthughtたことがない率直であることをTPUTは..私は

http://www.unifr.ch/sfm 
print() on closed filehandle OUTPUT at test_3.pl line 20, <INPUT> line 2. 
http://www.zug.phz.ch 
print() on closed filehandle OUTPUT at test_3.pl line 20, <INPUT> line 3. 
http://www.schwyz.phz.ch 
print() on closed filehandle OUTPUT at test_3.pl line 20, <INPUT> line 4. 
http://www.luzern.phz.ch 
print() on closed filehandle OUTPUT at test_3.pl line 20, <INPUT> line 5. 
http://www.schwyz.phz.ch 
print() on closed filehandle OUTPUT at test_3.pl line 20, <INPUT> line 6. 
http://www.phvs.ch 
print() on closed filehandle OUTPUT at test_3.pl line 20, <INPUT> line 7. 
http://www.phtg.ch 
print() on closed filehandle OUTPUT at test_3.pl line 20, <INPUT> line 8. 
http://www.phsg.ch 
print() on closed filehandle OUTPUT at test_3.pl line 20, <INPUT> line 9. 
http://www.phsh.ch 
print() on closed filehandle OUTPUT at test_3.pl line 20, <INPUT> line 10. 
http://www.phr.ch 
print() on closed filehandle OUTPUT at test_3.pl line 20, <INPUT> line 11. 
http://www.hepfr.ch/ 
print() on closed filehandle OUTPUT at test_3.pl line 20, <INPUT> line 12. 
http://www.phbern.ch                    

、以下を参照してください....全体のコードをデバッグする必要があるだけでなく、私はいくつかの黙想
エラーが取り除くためにたくさん試してみました:うまく-firstly、私はこれは非常にはないと思います深刻なエラー - 私はそれをデバッグする必要があると思うし、それはより良く動作します。 第2に、私は最初にスクリプトが「マシンに過負荷をかけた」ように思ったのですか? 私はそれについてはあまりよく分かりません。症状は奇妙に見えますが、私はそれが "マシンのオーバーロード"を終わらせることは必要ではないと思います。 第3に、私は確かに、問題は、WWW :: Mechanize :: Firefoxとはまったく関係がありますか? これは、Perlの警告の意味と、診断プラグマを使用してより多くの説明を得るというアイディアにつながります。あなたはどう思いますか?まあ

print() on unopened filehandle FH at -e line 1 (#2) (W unopened) An I/O operation was attempted on a filehandle that w +as never initialized. 

- 代わりに、印刷( - 私たちはオープン()、sysopenで()、またはそう+ cket()の呼び出しを行う、またはファイルハンドルパッケージも

からコンストラクタを呼び出す必要があります)closeed filehandle OUTPUTにもautodieを使わなかったこととopenの戻り値をチェックしていないことがわかるたくさんの回答があります。 私はそれをデバッグして、どこにエラーが出現するのかを確かめなければなりません。

この初心者の質問には申し訳ありませんが、Googleで私が知る必要があるものは見つかりません。私は、印刷を理解し、これを理解していない...

答えて

0

古いポストそのけど用事

私はあなたがディレクトリにファイルを書き込む権限を持っていないと思います。したがって、ファイルハンドルを開くことができない場合、print()はファイルハンドルに書き込むことができません。

以下のような何かをすることは、より適切な場合があります

open(OUTPUT, ">$name") or die "Cannot open file...\n"; 
関連する問題