每当我运行TokeParser时,我都会遇到这个未定义的错误。我认为这是因为它从HTML中提取的最后一件事是'undef'导致了错误,但我确定这是否正确或者如果是这样的话该怎么做。
#!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;
}
答案 0 :(得分:2)
很明显$p
是undef,而$p
是HTML::TokeParser->new($htmlFileName)
的结果。这意味着打开文件时出错。如概要中所述,使用以下内容确定错误是什么:
my $p = HTML::TokeParser->new($htmlFileName)
or die("Can't open $htmlFileName: $!\n");