Ich hoffe, du findest die Antwort noch nach dem ganzen Gequassel über Tags ;-)
Da kann ich noch immer nicht folgen. Wahrscheinlich verstehe ich es falsch. Ich schildere mal meinen Denkweg: Ich könnte in
$a
eine Eingabe192.168.0.0/24
haben. Die Subnetzmaske dazu wäre255.255.255.0
. Wenn ich das mit192.168.0.0
UND-verknüpfe, bleibe ich bei192.168.0.0
als Eintrag in$a2
. Das wäre aber der gleiche Wert wie für192.168.0.0/16
. Wenn ich in$b
dann eine IP192.168.255.20
habe, würde mir die für192.168.0.0/24
fälschlicherweise als Treffer in$a2
ausgewertet, obwohl sie nur für192.168.0.0/16
ein Treffer wäre.
Da Du die Aufgabe so definiert hast, dass ein Eintrag von $a2 Teilmenge eines anderen Eintrags sein kann, ist mein Hinweis auf Präfixfreiheit obsolet.
Andererseits - wenn dein $a Array 192.168.0.0/24 UND 192.168.0.0/16 enthält - und es Dir nur auf Treffer ankommt, nicht aber darauf, welcher Eintrag aus $a getroffen wurde, dann kannst Du im Vorverarbeitungsschritt den Eintrag 192.168.0.0/24 auch löschen. Der ist dann redundant. Falls es Dir aber AUCH darauf ankommt, ob Du den /24 oder den /16 Eintrag getroffen hast, dann musst Du sicherstellen, dass Du die längeren Präfixe zuerst testet. Tust Du das?
Rolf