If I understand your requirements correctly, you are trying to see if a given IP address is part of a class C (or a derivative of that problem: which of a particular Class-C address is missing).
The NetAddr::IP module contains several functions that can help:
- $me->contains($other)
Returns true when $me completely contains $other. False is returned otherwise and undef is returned if $me and $other are not both NetAddr::IP objects.
- ->network()
Returns a new object refering to the network address of a given subnet. A network address has all zero bits where the bits of the netmask are zero. Normally this is used to refer to a subnet.
- ->hostenum()
Returns the list of hosts within a subnet.
When dealing with IP addresses, this module will significantly reduce development time, improve readability, and decrease bugs. At least, it did, for me.
"As you get older three things happen. The first is your memory goes, and I can't remember the other two... "
- Sir Norman Wisdom