2013-05-02 52 views
0
use strict; 
use warnings; 
use utf8; 
use 5.010; 
use HTML::HTML5::Parser; 

open (FILE, '<links.txt') ; 

my @lines = <FILE>; 
my $i; 
my $a = $lines[$i]; 

my $xml = HTML::HTML5::Parser->load_html(location => $a) ; 

遇到錯誤: 上位於C未定義的價值「無法調用 「的setValue」:/ Dwimperl/perl的/網站/ lib中/ HTML/HTML5/Parser/TagSoupParser.pm line 2946「無法調用 「的setValue」 未定義的值 - perl的

我試着插入一個if和define值,但它不起作用。

我在學習Perl的開始,這裏有人能幫我嗎?

+3

由於'$ i'沒有被定義,所以這不能編譯。你是否缺少一些代碼? – dsolimano 2013-05-02 14:20:57

+3

如果沒有導致問題出現的數據,代碼是無用的。 (但是請務必在發佈之前將HTML降低到產生錯誤所需的最小值!)並且假設錯誤不在您實際運行的代碼中(而不是您發佈的無用代碼)。你未能證明你的問題。 – ikegami 2013-05-02 14:49:50

+0

感謝您的回覆!所以對我來說問題是有些鏈接會產生錯誤,有些則不會。我不知道它是否是鏈接本身(我嘗試刪除其餘的代碼 - 就像上面 - 但仍然沒有)或網頁的HTML?我如何檢查哪些元素會產生錯誤 - 將html分成幾塊並單獨解析它? – emj 2013-05-02 16:13:46

回答

0
use strict; 
use warnings; 
use utf8; 
use 5.010; 
use HTML::HTML5::Parser; 
use Try::Tiny; 

open (my $FILE, '<', 'links.txt') ; 
my @lines = <$FILE>; 
my $i = 0; 
foreach my $a (@lines) { 
    my $xml = try { 
     HTML::HTML5::Parser->load_html(location => $a) 
    } catch { 
     warn "Bad line [$i][$a]"; 
     warn "Actual error: $_"; 
    }; 
    $i++; 
} 

我已經清理你的代碼和我最好的猜測,它是如何實際上應該是結構化,並增加了一個try/catch塊(使用Try::Tiny)證明識別您的問題線的方法。

在真正診斷問題之前,您需要確定哪些輸入導致問題。

+0

我找不到哪個HTML元素導致了這個問題,但是我已經用Try :: Tiny在「壞」鏈接上消除了錯誤,這對我來說已經足夠了。謝謝你的幫助! – emj 2013-05-03 19:33:32

相關問題