2012-11-06 5 views
1

TokeParser를 실행할 때마다이 정의되지 않은 오류가 발생합니다. 그것이 HTML에서 가져 오는 마지막 것은 'undef'가 오류를 일으키는 것이기 때문에 그것이라고 생각합니다. 그러나 그것이 맞다면, 또는 그것이 무엇인지에 대해서 확신합니다.정의되지 않은 값에서 메서드 "get_token"을 호출 할 수 없습니다.

#!usr/bin/perl 
use warnings; 
use strict; 

use HTML::TokeParser; 

sub findTokens { 
    my $htmlFileName = "83.html"; 

    my $p = HTML::TokeParser->new($htmlFileName); 
    my @tokens; 

    while (my $newChunk = $p->get_token) { 
      if ($newChunk->[0] eq 'T') { 
       my @lineArray = split(' ', $newChunk->[1]); 
       foreach my $i (@lineArray) { 
        if (lc($i) =~ /^[a-z]*\-?'?s?$/) { 
         push(@tokens, lc($i)); 
        } 
       } 
      } 
    } 
    return @tokens; 
} 

답변

2

이 미확정의 것을 분명히 $p, 그리고 $pHTML::TokeParser->new($htmlFileName)의 결과입니다. 파일을 여는 중 오류가 발생했음을 의미합니다. 시놉시스에서 제안한대로 다음을 사용하여 오류의 원인을 확인하십시오.

my $p = HTML::TokeParser->new($htmlFileName) 
    or die("Can't open $htmlFileName: $!\n"); 
+0

파일 구문 분석이 끝날 때 오류라고 생각했지만 그게 전부입니다. 그 중 하나는 시간을 보냈으며 두 번째 눈을 필요로했습니다. 고맙습니다 !! – user992622

+0

'get_token'은'$ p'에서 호출되고'$ p'는 절대로 변하지 않습니다. 그러므로'$ p-> get_token'이 처음으로 평가되어야합니다. – ikegami

관련 문제