我想使用模块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和其他模块,但它没有给出任何结果。
你能告诉我怎么修理它?
提前谢谢
使用Carp :: Always:
无法祝福非参考价值 /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 ::更新( 'WWW :: Wunderground :: API = HASH(0x1e5b178)', 'KIAD')在/home/xyz/workspace/WeatherTest/scr.pl第4行调用 在/home/xyz/workspace/WeatherTest/scr.pl行调用eval {...} 4
答案 0 :(得分: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"
}
}
}