0

我一直在戳这个并且无法解决这个“unblessed reference”错误。这是我的简化代码:

#!/usr/local/bin/perl

use strict;
use warnings;
use HTML::TokeParser;

my $p = HTML::TokeParser->new( $ARGV[0] );
while (my $t = $p->get_tag('img')) {
    my $src = $t->get_attr('src');
    print "$src\n";
}

这是我尝试时的错误消息:

Can't call method "get_attr" on unblessed reference at M:\list_images_in_html.pl line 9.

我收集到不知何故,它没有将 $t 识别为带有 get_attr 方法的令牌对象,但我不明白为什么。

4

2 回答 2

4

根据手册(MetaCPAN 的 HTML::TokeParse), get_tag() 返回一个数组引用,而不是一个对象。

您不能在沼泽标准数组 ref 上调用 get_attr()。

于 2013-04-19T21:07:23.263 回答
1

get_attrHTML::TokeParser::Simple(的包装器HTML::TokeParser)中的一种便捷方法,但不存在于HTML::TokeParser.

将代码中的两行替换为:

use HTML::TokeParser::Simple;
my $p = HTML::TokeParser::Simple->new( $ARGV[0] );

并且您的脚本将起作用。

于 2013-04-19T21:52:27.407 回答