以及我運行此腳本,這是寫做的網站 一些截圖,我也和運行mozrepl創建WWW縮略圖::使用Mozrepl機械化::火狐 - 一些調試試圖
在這裏,我們有文件與一些要求的網址...注意這只是真正列表的一小段 - 真正的列表要長得多。它包含超過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);
}
看到這裏的好鋪天蓋地的輸出 - 坦率地說我從來沒有thught得到這樣一個有趣的輸出..我有調試整個代碼....見下文,
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
一些沉思:第一,我認爲這不是一個非常嚴重的錯誤 - 我想我必須調試它,然後它會更好地工作。 其次,我首先想到腳本似乎「超載機器」? 現在我不是很確定:症狀確實看起來很奇怪,但我想這並不是必要的,以至於得出「機器過載」
第三,我想到了必須採取的某些步驟確保問題根本與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()調用,或呼叫文件句柄包 構造除此之外 - 或者,打印( )關閉文件句柄OUTPUT也給出了很多答案,這些答案會告訴我們,我們沒有使用autodie,也沒有檢查open的返回值。 首先我必須調試,並確保以找到錯誤的用武之地[/ QUOTE]
但一些思索後,我認爲這是值得擁有的所有測試東西 - , 仔細一看什麼你怎麼看待這個想法總是測試使用it.That意味着我們還應該養成使用三個
arg open():
open my $fh, '>', $name or die "Can't open file $name : $!";
print $fh $stuff;
良好的習慣之前,爲了確保該文件是開放的 - 我想,我們可以或應該在不使用die()
, 的情況下解決此問題,但我們必須手動使用某種方法讓我們知道哪些文件無法創建。在我們的例子,它看起來像所有這些 ....這上面顯示...
更新在選擇你的意思是我需要有存儲圖像的文件名是個好文件名..注:我想本地存儲所有這些。但是,如果我有一個龐大的網址列表,那麼我會得到一個輸出文件的巨大列表。所以我需要有很好的文件名。我們可以反映那些東西和需要在程序中!?
the 最新更新;似乎有一些錯誤機械化 ....我想這樣!
你好,親愛的user1126070 - THX了很多。我會按照建議去做。我會明確地設置它,並關閉一個文件處理程序,如果我不再需要它,並且你'開啓'就會死亡。通過選擇一個好的文件名,你的意思是我需要有一個文件名來存儲圖像。注意:我想**將它們全部存儲在本地**。但是,如果我有一個龐大的網址列表,那麼我會得到一個**輸出文件**的巨大列表。所以我需要有很好的文件名。我們可以在程序中反映**和需求嗎? 期待聽到。 thx很多 – zero 2012-03-27 07:15:11
'好文件名',我的意思是,消毒他們。刪除'://,/'和其他可能會阻止它們被創建的東西。我添加了一些正則表達式來做到這一點。 – user1126070 2012-03-27 07:52:33
hello user1126070 thx很多的額外提示。你應該得到一個怪物恭喜。問候 – zero 2012-03-27 09:16:29