1

每当我运行 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;
}
4

1 回答 1

2

这显然$p是 undef,并且$pHTML::TokeParser->new($htmlFileName). 这意味着打开文件时出错。正如概要中所建议的,使用以下内容来确定该错误是什么:

my $p = HTML::TokeParser->new($htmlFileName)
   or die("Can't open $htmlFileName: $!\n");
于 2012-11-07T00:13:23.410 回答