# untested! my %bitmap; for my $ix (0..$#AoA) { for my $sn (@{$AoA[$ix]}) { vec($bitmap{$sn}, $ix, 1) = 1; } } my @nope = (2, 13, 3, 16); my $bad = '' for my $bit (@nope) { $bad ||= $bitmap{$bit}; } my @ok = grep { !vec($bad, $_, 1) } 0..$#AoA