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

それは明らかに$pundef であり$p、 の結果ですHTML::TokeParser->new($htmlFileName)。これは、ファイルを開くときにエラーが発生したことを意味します。Synopsis で提案されているように、以下を使用してそのエラーが何であるかを判断します。

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