【问题标题】:Why does HTTP::Message::decodable complain about "Can't use an undefined value as a HASH reference"?为什么 HTTP::Message::decodedable 抱怨“不能使用未定义的值作为 HASH 引用”?
【发布时间】:2010-03-17 07:56:49
【问题描述】:

我在尝试使用 aptitude 包管理器在 Debian Lenny OS 上安装的 Perl 5.10 / libwww 调用 HTTP::Message::decodable() 时遇到 Can't use an undefined value as a HASH reference 错误。我真的被卡住了,所以希望能得到一些帮助。

这是错误:

 不能在 (eval 2) 第 1 行使用未定义的值作为 HASH 引用。
在 test.pl 第 4 行
main::__ANON__('Can\'t use an undefined value as a HASH reference at at
在此处输入代码`(eval 2)...') 在 (eval 2) 第 1 行调用
HTTP::Message::__ANON__() 在 test.pl 第 6 行调用

代码如下:

use strict;
use HTTP::Request::Common;
use Carp;
$SIG{ __DIE__ } = sub { Carp::confess( @_ ) };

print HTTP::Message::decodable();

【问题讨论】:

    标签: perl libwww-perl


    【解决方案1】:

    查看changelog,看起来HTTP::Message::decodable() 是在5.814 版中添加的。您确定您正在阅读适合您的版本的文档吗?

    试试:

    perl -MHTTP::Message -e 'warn $HTTP::Message::VERSION'
    

    .. 它应该返回 5.814 或更多...

    【讨论】:

    • 谢谢!我显然不在正确的版本上。 $ perl -MHTTP::Message -e 'warn $HTTP::Message::VERSION' 5.812 at -e 第 1 行。如果我查看 aptitude,它会说 libwww-perl 包的版本为 5.813-1(我不是确定为什么这与上面命令给出的 5.812 不同)。看来我需要升级了
    【解决方案2】:

    Gavin 是对的——我安装了旧版本的 libwww-perl。我依赖于使用 Debian Lenny 上可用的最新版本(假设这是相当最新的)。原来可用的最新版本是 5.813,但我需要 5.814 或更高版本才能使用此功能。由于 aptitude 没有可用的打包版本,因此我使用 CPAN 安装了最新版本:

    $ perl -MCPAN -e shell
    cpan[1]> upgrade HTTP::Message
    

    全部完成!

    【讨论】:

    • 不要发布非答案作为答案。如果您有其他信息,请改用 cmets 或更新问题。
    • 这看起来像是对我的回答。它解释了问题并提供了解决方案。
    • @brian 在我看来应该是对@Gavin 回答的评论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 2011-01-20
    相关资源
    最近更新 更多