“Undefined subroutine& HTML :: Entities :: decode_entities called”

时间:2009-03-12 11:52:27

标签: perl

我收到了错误

  

Undefined subroutine& HTML :: Entities :: decode_entities called`

使用LWP::UserAgent,虽然模块在那里,但HTML::Parser模块。

我怀疑它与缺少的XS模块有关,因为有问题的功能似乎是在XS中实现的,但我不知所措。

2 个答案:

答案 0 :(得分:1)

HTML :: Entities的最新版本依赖于通过加载HTML :: Parser模块的XS组件来获取decode_entities例程。由于这两个模块是分布在一起的,这应该不是问题,但是你可能有一个较旧的HTML :: Parser版本而不是使用XS(或者安装了多个版本的HTML :: Parser,错误的是先找到了。

检查HTML :: Parser中的$ VERSION,在http://search.cpan.org/dist/HTML-Parser上查找该分发,并验证分发是否具有您拥有的HTML :: Entities的版本。

答案 1 :(得分:-1)

你错过了这一行:

use HTML::Entities;

来自HTML::Entities CPAN page,应该像这样使用:

use HTML::Entities;
my $a = "Våre norske tegn bør &#230res";
decode_entities($a);
encode_entities($a, "\200-\377");

如果您认为HTML :: Entities包有问题,可以检查系统上的源代码。来自bash:

vim $(perldoc -l HTML::Entities)

在文本编辑器中打开文件后,您可以检查是否已定义子例程。我怀疑包装是正确的,更有可能的是包装没有被“使用”。

您也可以在命令行测试它,看看它是否在您的程序之外工作:

perl -MHTML::Entities -le 'print HTML::Entities::decode_entities( "Våre norske tegn bør &#230res" )'