Error using uninitialized value

So, I made this little script today in perl.

For some reason, it doesn't seem to load anything, and the error keeps popping up saying

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. 

Can someone help me fix this code?

Also used File :: Path in order? and this is 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"; } 
+4
source share
1 answer

foreach my $item ... on line 16 should do the trick!

Like its hash-ref, you should iterate over it like this:

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

Source: https://habr.com/ru/post/1496544/


All Articles