ip范围的判断求解

ip范围的判断求解

用纯真ip数据库得到这样一个文本

222.20.255.0    222.20.255.255  武汉大学工学部 学生十七舍
222.21.250.0    222.21.250.255  湖北省武汉市 中国教育科研网武汉节点
222.42.11.0     222.42.11.255   湖北省武汉市 铁通
222.42.58.0     222.42.58.255   湖北省武汉市 铁通
222.42.64.0     222.42.118.15   湖北省武汉市 铁通
222.42.118.16   222.42.118.16   湖北省武汉市 盐务管理局
222.42.118.17   222.42.127.255  湖北省武汉市 铁通

现在给定一个ip比如 222.42.11.9,
要判断是否属于这个文本所描述的ip范围,怎么判断呢?

我考虑了排序的方法,但是ip作为字符串比较大小失败了,(见我另一个帖子 http://bbs.chinaunix.net/thread-1181733-1-1.html
如果用最笨的办法逐个拆开判断也不是不可以,但是心有不甘,现在困惑中。。。。。

期盼各位高手解惑啊

可以按字段来判断嘛。。。根据IP段。。。 好像本版有内似的帖子,你自己搜一下。。。
http://www.ieasy.org/reload/archives/cat2/ipperl_for_qqwr.html


[Copy to clipboard] [ - ]
CODE:
my $ip="222.42.11.9";
my @sub = split/\./, $ip;

while (<>)
{
    my @text = split/\s+/, $_;
    my @sub1 = split/\./, $text[0];
    my $i;

    for ($i = 0; $i < 3; $i++)
    {
        if ($sub[$i] ne $sub1[$i])
        {
            last;
        }
    }

    if ($i == 3)
    {
        my @sub2 = split/\./, $text[1];

        if ($sub[3] >= $sub1[3] && $sub[3] <= $sub2[3])
        {
            if (defined($text[3]))
            {
                $text[2] .= $text[3];
            }
            print "find: ", $text[2], "\n";
            last;
        }
    }

}

String 不要用 >,<, = 去比较啦..没有意义..
只能用 gt, eq, le,lt等 来比较...不然就转成数字去比较...
应该是pack("C4")吧...
谢谢大家的指点,学习中,呵呵