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.pm37行目WWW::Wunderground :: API :: update('WWW :: Wunderground :: API = HASH(0x1e5b178)'、'KIAD')は/ home / xyz/workspaceで呼び出されます/WeatherTest/scr.pl4行目eval{...}/home/xyz/workspace/WeatherTest/scr.pl4行目で呼び出されます

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 に答える