@ip = qw\10.0.0.1 10.1.2.3 192.168.12.5 77.75.0.1\; @subnets = qw\10.0.0.0/24 10.1.0.0/16 192.168.0.0/12\; foreach $ip (@ip){ @a = split /\./, $ip; $di = getIp(@a); foreach $subnet (@subnets){ ($a, $b) = getNetwork($subnet); if(($di >= $a) && ($di <= $b)){print "$ip in $subnet\n";} } } sub getIp { return ($_[0]*256*256*256) + ($_[1]*256*256) + ($_[2]*256) + $_[3]; } sub getNetwork { @a = split(/[\/|\.]/, +shift); return (getIp(@a[0 .. 3]), (getIp(@a[0 .. 3]) + (2 ** (32 - $a[4])))); }