%maskcount = ( "/25" => "128", "/26" => "64", "/27" => "32", "/28" => "16"); # loop POPs while($line=) { chomp($line); next unless ($line=~/^\d/); ($ipbase,$mask)=split(/;/,$line); @ip=split(/\./,$ipbase); $areacode =~ s/^0//; print "$areacode: $ipbase/$mask\n"; # do not load first (=network) and second (=gateway) ip addressess $startip=2; # do not load last (=broadcast) ip address $endip=$maskcount{$mask}-1; print $endip; for ($cnt=$startip;$cnt<$endip;$cnt++) { $ipend[0]=$ip[0]; $ipend[1]=$ip[1]; $ipend[2]=$ip[2]; $ipend[3]=$ip[3]+$cnt; if ($ipend[3]>255) { $ipend[2]=$ip[2]+1; $ipend[3]=$ip[3]-255; } $ipend = join(".",@ipend); print "$ipend\n"; } }