使用未初始化值时出错

时间:2013-08-12 10:53:25

标签: json perl

所以今天我用perl制作了这个小脚本。

出于某种原因,它似乎没有下载任何东西,并且一个错误不断弹出说

Use of uninitialized value $id in concatenation (.) or string at room.pl line 18.
Use of uninitialized value $id in concatenation (.) or string at room.pl line 18.

有人可以帮我修复此代码吗?

还在使用File :: Path好吗?这是json http://media1.clubpenguin.com/play/en/web_service/game_configs/rooms.json

use strict;
use warnings;

use File::Path;

mkpath "rooms/";

use JSON;
use LWP::Simple qw(mirror);

open FILE, 'rooms.json' or die "Could not open file inputfile: $!";
sysread(FILE, my $result, -s FILE);
close FILE or die "Could not close file: $!"; 
my $json = decode_json($result);

foreach $item ($json) {
my $id = $item->{room_key};
mirror "http://media1.clubpenguin.com/play/v2/content/global/rooms/$id.swf" => "rooms/$id.swf";
}

1 个答案:

答案 0 :(得分:3)

第16行的

foreach my $item ...应该可以解决问题!

作为一个哈希引用,你必须以这种方式循环:

...
foreach my $item (sort keys %$json) {
        my $id = $json->{$item}->{room_key};
        print $id . "\n";
        #mirror "http://media1.clubpenguin.com/play/v2/content/global/rooms/$id.swf" => "rooms/$id.swf";
    }