sub is_hostaddress { my $self = shift if ref($_[0]); my $ipaddr = shift; my $netmask = shift; return unless defined($ipaddr) && defined($netmask); my $binipaddr = unpack('L', pack('C4', split(/\./, $ipaddr))); my $binnetmask = unpack('L', pack('C4', split(/\./, $netmask))); my $result = $binipaddr & $binnetmask; my $result2 = $binipaddr | ~$binnetmask; # printf "%04x %04x, %04x %04x\n", $binipaddr, $binnetmask, $result, $result2; # printf "%032b\n%032b\n", $binipaddr, $binnetmask; printf "%032b\n%032b\n", $result, $result2; }