# if @MenuItems actually has something it it, then MenuItems => [@MenuItems] is fine # but for simplicity i just made it MenuItems => [] my %menus = ( a => { label => "  A", MenuItems => [] }, b => { label => "  B", MenuItems => [] }, c => { label => "  C", MenuItems => [] }, ); #OR: my %menus = map { lc($_) => {label => "  $_", MenuItems => []} } 'A' .. 'C'; # then: foreach my $app (map {lc $_} @sorted_applications) { push @{ $menus{$app}->{MenuItems} }, $app; }