The data you have is JSON. And a module such as JSON has decode_json to convert it to a Perl data structure. Alternatively, if you don't want to install JSON, Perl ships with JSON::PP, which is a drop-in replacement (or fall-back).
#!/usr/bin/env perl
use strict;
use warnings;
use JSON qw(decode_json);
my $json = do {
local $/ = undef;
<DATA>;
};
my $data = decode_json($json);
foreach my $element (@{$data->{'genres'}}) {
print "id: $element->{'id'}, name: $element->{'name'}\n";
}
__DATA__
{
"genres": [
{
"id": 28,
"name": "Action"
},
{
"id": 12,
"name": "Adventure"
},
{
"id": 16,
"name": "Animation"
},
{
"id": 35,
"name": "Comedy"
},
{
"id": 80,
"name": "Crime"
},
{
"id": 99,
"name": "Documentary"
},
{
"id": 18,
"name": "Drama"
},
{
"id": 10751,
"name": "Family"
},
{
"id": 14,
"name": "Fantasy"
},
{
"id": 36,
"name": "History"
},
{
"id": 27,
"name": "Horror"
},
{
"id": 10402,
"name": "Music"
},
{
"id": 9648,
"name": "Mystery"
},
{
"id": 10749,
"name": "Romance"
},
{
"id": 878,
"name": "Science Fiction"
},
{
"id": 10770,
"name": "TV Movie"
},
{
"id": 53,
"name": "Thriller"
},
{
"id": 10752,
"name": "War"
},
{
"id": 37,
"name": "Western"
}
]
}
This produces:
id: 28, name: Action
id: 12, name: Adventure
id: 16, name: Animation
id: 35, name: Comedy
id: 80, name: Crime
id: 99, name: Documentary
id: 18, name: Drama
id: 10751, name: Family
id: 14, name: Fantasy
id: 36, name: History
id: 27, name: Horror
id: 10402, name: Music
id: 9648, name: Mystery
id: 10749, name: Romance
id: 878, name: Science Fiction
id: 10770, name: TV Movie
id: 53, name: Thriller
id: 10752, name: War
id: 37, name: Western
A foreach loop is useful here, as described in perlintro or perlsyn. Dealing with complex data structures is covered in Intermediate Perl (OReilly), in perlreftut, perlref, perldsc, and perllol.