3

我想使用模块 WWWW::Wunderground::API 使用 JSON 下载带有天气的数据。

这是我的 PERL 脚本:

use WWW::Wunderground::API;

my $wun = new WWW::Wunderground::API(location=>'KIAD', api_key=>'my key');
print 'JSON source:'.$wun->json if $wun->api_type eq 'json';

它给了我一个错误:

无法祝福 /usr/local/share/perl5/Hash/AsObject.pm 第 82 行的非参考值。

我无法修复它。我一直在尝试更新 cpan 和其他模块,但它没有给出任何结果。

你能告诉我如何修理它吗?

先感谢您


与鲤鱼::总是:

无法在 /usr/local/share/perl5/Hash/AsObject.pm 第 82 行祝福非参考值 Hash::AsObject::AUTOLOAD('Hash::AsObject', undef) 在 /usr/local/share 调用/perl5/WWW/Wunderground/API.pm 第 37 行 WWW::Wunderground::API::update('WWW::Wunderground::API=HASH(0x1e5b178)', 'KIAD') 在 /home/xyz/workspace 调用/WeatherTest/scr.pl 第 4 行 eval {...} 在 /home/xyz/workspace/WeatherTest/scr.pl 第 4 行调用

4

1 回答 1

5

它来自缺乏错误检查。以下意外返回undef

JSON::Any->jsonToObj($json)->{current_observation}

您可能想查看使用以下内容获取的内容:

use LWP::Simple qw( get );
my $api_key  = 'my key';
my $location = 'KIAD';
print get("http://api.wunderground.com/api/$api_key/conditions/q/$location.json");

也许您可以解决的响应中有错误消息。例如,错误的 API 密钥会导致以下响应:

{
        "response": {
                "version": "0.1"
                ,"termsofService": "http://www.wunderground.com/weather/api/d/terms.html"
                ,"features": {
                }
                ,
        "error": {
                "type": "keynotfound"
                ,"description": "this key does not exist"
        }
        }
}
于 2012-11-13T08:17:23.587 回答