首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从$result中移除特定网段

从$result中移除特定网段
EN

Stack Overflow用户
提问于 2014-06-02 20:47:16
回答 1查看 59关注 0票数 0

我想从结果中删除所有以'192.18‘开头的地址。我要么删除所有地址,要么一个都不删除...

下面是代码。

代码语言:javascript
复制
sub get_oids{
    my($starting_oid , $new_oid , $unique_oid , $result , $crap);
    my($ip , $name , $port , $type);
    $starting_oid = $_[0];
    $new_oid = $starting_oid ;

    while(Net::SNMP::oid_context_match($starting_oid,$new_oid)){
        $result = $session->get_next_request(($new_oid));
        return  unless (defined $result);

        ($new_oid , $crap) = %$result;
        if (Net::SNMP::oid_context_match($starting_oid,$new_oid)){
            $unique_oid = $new_oid;
            $unique_oid =~ s/$starting_oid//g;
            $ip = (Convert_IP(Get_SNMP_Info("$oid_root".".4"."$unique_
+oid")));
            $name = (Get_SNMP_Info("$oid_root".".6"."$unique_oid"));
            $port = (Get_SNMP_Info("$oid_root".".7"."$unique_oid"));
            $type = (Get_SNMP_Info("$oid_root".".8"."$unique_oid"));
            @todo=(@todo,$ip);
            write;
            get_oids($new_oid);
EN

回答 1

Stack Overflow用户

发布于 2014-06-03 01:24:28

您是否考虑过使用NetAddr::IP中的contains()方法

代码语言:javascript
复制
#!/usr/bin/env perl

use strict;
use warnings;
use feature 'say';

use NetAddr::IP;

my @ips = qw(192.168.0.1 192.18.0.1 192.18.22.44 255.255.255.0);

my $Range = NetAddr::IP->new('192.18.0.0/16');

for my $ip (@ips) {
    my $IP = NetAddr::IP->new($ip);
    my $contains = $Range->contains($IP) ? "yes" : "no";
    say "$ip: $contains";
}

这将提供以下输出:

代码语言:javascript
复制
alex@yuzu:~$ ./net_addr_ip.pl
192.168.0.1: no
192.18.0.1: yes
192.18.22.244: yes
255.255.255.0: no
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23994910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档