my %alldsks = map {$_=>1} keys %dsks; for my $site (sort {$a<=>$b} keys %sites) { my @sitedsks = keys %{ $sites{$site} }; my %missingdsks = %alldsks; delete @missingdsks{@sitedsks}; print "Site $site MISSING: ", join(", ", sort {$a<=>$b} keys %missingdsks), "\n"; } __END__ Site 377 MISSING: 70, 71, 90, 91, 92, 93, 189, 190, 204, 205, 206, 207, 550, 551, 554 Site 512 MISSING: 71, 96, 97, 204, 205, 206, 207, 550, 551, 554 Site 587 MISSING: 70, 71, 90, 91, 92, 93, 96, 97, 189, 190, 204, 205, 206, 207 Site 1108 MISSING: 90, 91, 92, 93, 96, 97, 189, 190, 550, 551, 554