#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my $more_rec = { '1'=>{ 'agenda' => [ {'YEAR'=>'2008','MONTH'=>'MARCH', 'COLOR_CODE'=>'1' }, {'YEAR'=>'2014','MONTH'=>'APRIL', 'COLOR_CODE'=>'2' }, {'YEAR'=>'2014','MONTH'=>'DECEMBER','COLOR_CODE'=>'3'}, ], }, '2'=>{ 'agenda' => [ {'YEAR'=>'2001','MONTH'=>'MAY', 'COLOR_CODE'=>'1' }, {'YEAR'=>'2009','MONTH'=>'JUNE','COLOR_CODE'=>'2' }, {'YEAR'=>'2001','MONTH'=>'MAY', 'COLOR_CODE'=>'1' }, {'YEAR'=>'2009','MONTH'=>'JUNE','COLOR_CODE'=>'2' }, {'YEAR'=>'2013','MONTH'=>'JULY','COLOR_CODE'=>'2' }, {'YEAR'=>'2016','MONTH'=>'SEPTEMBER', 'COLOR_CODE'=>'4' } ], }, }; my $recs = collect(); print Dumper $recs; sub collect { my @all = (); foreach my $number ( keys %{$more_rec} ) { my $ar = $more_rec->{$number}; for my $mth (@{$ar->{'agenda'}}){ push @all, $mth; } } return \@all; }