This code provides details of where the problem occurs:
my %comp = (
'Ad1' => [ qw( 0A78 0A9E 0AB9 0AC0 ) ],
'Ad2' => [ qw( 0A78 0A9E 0AB9 0AC0 ) ],
);
my %device;
my @locations = sort keys %comp;
for my $location (@locations) {
for my $dev_name ( @{ $comp{$location} } ) {
$device{$dev_name}{$location}++;
}
}
my $expected_locations = join ',', @locations;
for my $dev_name ( sort keys %device ) {
my $actual_locations = join ',', sort keys %{$device{$dev_name}};
next if $expected_locations eq $actual_locations;
print "ERR: '$dev_name' only found in '$actual_locations'\n";
}
By the way,
if ( scalar keys %comp > 1 ) {...} can be reduced to
if (%comp) {...}.