# I am looking for hosts that appear in all of a set of SQL tables. # I keep a table count and increment the count for a host for each table in # which it occurs. # Then I clean out those that were not in all tables. # Faked data my %hosts = ( a => 3, b => 3, c => 4, d => 3, e => 2, f => 3, g => 3, ); my $table_count = 3; # This: do {delete $hosts{$_} unless $hosts{$_} == $table_count} for keys %hosts; # or This: map {delete $hosts{$_} unless $hosts{$_} == $table_count} keys %hosts;