#!/usr/bin/env perl use strict; use warnings; use JSON; use Data::Dumper; my $data = decode_json '{"id":241995,"name":"Georgia vs Finland","start":"2013-09-10T17:00:00.000Z","status":"paid","sport-id":15,"category-id":[146598],"markets":[],"meta-tags":[{"id":4,"name":"Soccer","type":"SPORT"},{"id":650,"name":"Qualifiers","type":"COMPETITION"},{"id":5,"name":"World Cup 2014","type":"COMPETITION"},{"id":1,"name":"Sport","type":"Root"},{"id":651,"name":"September 10th 2013","type":"DATE"}],"in-running-flag":false,"allow-live-betting":false}'; my @extract; meta_wanted($_) && push @extract, $_ for @{$data->{'meta-tags'}}; print Dumper \@extract; sub meta_wanted { $_[0]->{type} eq 'SPORT' || $_[0]->{type} eq 'DATE' }