【问题标题】:How do I check if an ip address is in a specific range in perl?perl中如何检查IP地址是否在特定范围内?
【发布时间】:2014-09-14 23:38:20
【问题描述】:

我正在用 perl 编写 CGI 脚本。 如何检查 IP 地址,例如124.21.23.5,在 100.0.0.0 - 200.79.255.255 范围内?

我获取ip地址的方式是:

    my $ip = $ENV{'REMOTE_ADDR'};

【问题讨论】:

  • 你应该考虑使用Net::IP
  • 同意的 Net::IP 应该可以使用。

标签: perl ip cgi ip-address


【解决方案1】:

使用Net::IPoverlaps 方法:

use strict;
use warnings;

use Net::IP;

my $range = Net::IP->new('100.0.0.0 - 200.79.255.255') or die Net::IP::Error();

while (<DATA>) {
    chomp;
    my $ip = Net::IP->new($_) or die Net::IP::Error();
    my $match =  $range->overlaps($ip) ? "(match)" : "";
    print "$_ $match\n";
}

__DATA__
10.0.0.1
99.99.99.99
100.0.0.1
124.21.23.5
200.79.255.1
200.80.1.1

输出:

10.0.0.1
99.99.99.99
100.0.0.1 (match)
124.21.23.5 (match)
200.79.255.1 (match)
200.80.1.1

【讨论】:

    猜你喜欢
    • 2013-08-22
    • 2017-05-28
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    • 2021-09-08
    • 2011-01-09
    • 2010-12-02
    • 2012-06-22
    相关资源
    最近更新 更多