#!/usr/bin/perl use warnings; use strict; use Data::Dumper; my %groups = ( group1 => { 'http://foo.com/' => {}, 'http://bar.com/' => {}, 'http://baz.com/' => {}, }, group2 => { 'http://abc.com/' => {}, 'http://def.com/' => {}, 'http://ghi.com/' => {}, }, ); foreach my $group (sort keys %groups) { my $group_ref = $groups{$group}; foreach my $url (sort keys %$group_ref) { my $url_ref = $group_ref->{$url}; # do stuff $url_ref->{result} = 200; } } print Dumper(\%groups);