Json 使用未初始化值时出错

Json 使用未初始化值时出错,json,perl,Json,Perl,所以我今天用perl编写了这个小脚本 出于某种原因,它似乎没有下载任何东西,并且不断出现一个错误,说 在room.pl第18行的串联(.)或字符串中使用未初始化的值$id。 在room.pl第18行的串联(.)或字符串中使用未初始化的值$id。 有人能帮我修复这个代码吗 还可以使用File::Path吗?这就是json foreach my$item…第16行应该可以做到这一点 由于它是一个散列引用,因此必须以这种方式循环: ... foreach my $item (sort keys %$

所以我今天用perl编写了这个小脚本

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

在room.pl第18行的串联(.)或字符串中使用未初始化的值$id。
在room.pl第18行的串联(.)或字符串中使用未初始化的值$id。
有人能帮我修复这个代码吗

还可以使用File::Path吗?这就是json


foreach my$item…
第16行应该可以做到这一点

由于它是一个散列引用,因此必须以这种方式循环:

...
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";
    }

您能否在调用mirror之前添加print$id并在此处发布其输出?请将您的代码直接粘贴到问题中,而不是发布到pastebin或prntscr.com等外部服务。外部代码可以在任何时候消失,并且没有版本控制,就像SO问题一样。因此,未来的读者可能无法看到外部代码,因此这个问题将是无用的或没有多大意义。StackOverflow是关于其他人的未来参考,就像是关于你今天得到答案一样。好的,我会的,对不起。我从来不知道。不幸的是,它仍然是一样的:(我还假设
$json
是一个数组引用?然后你必须像这样循环:
foreach my$item(@$json){}
是的,它是一个数组引用,但由于某种原因它不起作用,并且它一直说它不是数组引用。您可以使用
Data::Dumper
打印整个结构,或者只
打印$json
。它说什么?您确实意识到
$item
$id
总是相同的值。
...
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";
    }