我收到错误Perl HTML ::解析器错误;未定义子程序及主要:: 1
Undefined subroutine &main::1 called at /usr/local/lib/perl/5.10.0/HTML/Parser.pm line 102.
这里是我的代码
#open (IN, "<", "foo.html") or die "can't open source file: $!";
my $p = HTML::Parser->new(api_version => 3,
start_h => [&start, "tagname, attr, text"],
text_h => [&text, "text"],
default_h => [sub { print OUT shift }, "text"],
);
$p->utf8_mode;
$p->empty_element_tags;
$p->ignore_elements(qw(br));
$p->parse_file("foo.html") or die "parsing failed: $!";
#while (<IN>) {
# $p->parse($_) || die "parsing failed: $!";
#}
#$p->eof;
#close IN;
正如你可以在注释部分我还试图直接打开并调用解析看(同样运气不多)。
该文件打开正常。
Parser.pm线102这是错误中提到的是parse_file子程序,特别是排队叫号 - >解析
我不知道在那里分析是,它不是在HTML解析器::也没有我发现它在HTML :: Entities中,唯一的依赖HTML :: Parser具有。 = /恐怕我在这一点上迷失了,PERL最深的魔法对我来说仍然是个谜。
你使用'use strict;使用警告;'? – TLP
fwiw,method'parse'显然是一个XS例程(即它在C中实现) – ErikR