in reply to Looping through arrays : are they equal ?

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) {...}.

Replies are listed 'Best First'.
Re^2: Looping through arrays : are they equal ?
by Util (Priest) on Apr 21, 2011 at 19:26 UTC
    Correction, the `if` could be reduced if `>= 1`, but not as is.