---
name: "Net::Subnets"
section: "3pm"
platform: "linux"
package: "libnet-subnets-perl"
version: "1.02-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Net::Subnets"
---

# Net::Subnets(3pm)

Computing Subnets In Large Scale Networks

## NAME

Net::Subnets - Computing Subnets In Large Scale Networks

## SYNOPSIS

```
    use Net::Subnets;
    my $sn = Net::Subnets->new;
    $sn->subnets(\@subnets);
    if (my $subnetref = $sn->check(\$address)) {
        ...
    }
    my ($lowipref, highipref) = $sn->range(\$subnet);
    my $listref = $sn->list(\($lowipref, $highipref));
```

## DESCRIPTION

Very fast matches large lists of IP addresses against many CIDR subnets and calculates IP address ranges.

This is a simple and efficient example for subnet matching:

```
    use Net::Subnets;
    my @subnets   = qw(10.0.0.0/24 10.0.1.0/24);
    my @addresses = qw/10.0.0.1 10.0.1.2 10.0.3.1/;
    my $sn = Net::Subnets->new;
    $sn->subnets(\@subnets);
    my $results;
    foreach my $address (@addresses) {
        if (my $subnetref = $sn->check(\$address)) {
            $results .= "$address: $$subnetref\n";
        }
        else {
            $results .= "$address: not found\n";
        }
    }
    print($results);
```

This is a simple example for range calculation:

```
    use Net::Subnets;
    my @subnets = qw(10.0.0.0/24 10.0.1.0/24);
    my $sn = Net::Subnets->new;
    my $results;
    foreach my $subnet (@subnets) {
        my ($lowipref, $highipref) = $sn->range(\$subnet);
        $results .= "$subnet: $$lowipref - $$highipref\n";
    }
    print( $results );
```

This is a simple example for list generation:

```
    use Net::Subnets;
    my $lowip  = '192.168.0.1';
    my $highip = '192.168.0.100';
    my $sn = Net::Subnets->new;
    my $listref = $sn->list(\($lowip, $highip));
    foreach my $address (@$listref) {
        # do something cool
    }
```

## METHODS

### "new"

```
    my $subnets = Net::Subnets->new;
    Creates an "Net::Subnets" object.
```

### "subnets"

```
    $subnets->subnets([qw(10.0.0.0/24 10.0.1.0/24)]);
    The C<subnets> method lets you prepare a list of CIDR subnets.
```

### "check"

```
    my $match = $subnets->check(\$address);
    The C<check> method lets you check an IP address against the previously
    prepared subnets.
```

### "range"

```
    my ($lowest, $highest) = $subnets->range(\$subnet)
    The C<range> method lets you calculate the IP address range of a subnet.
```

### "list"

```
    my $list = $subnets->list(\$lowest, $highest);
    The C<list> method lets you calculate a list containing all IP addresses
    in a given range.
```

## AUTHOR

Sebastian Riedel (sri@cpan.org), Juergen Peters (juergen.peters@taulmarill.de)

## COPYRIGHT AND LICENSE

Copyright (C) 2003-2010, Sebastian Riedel.

This program is free software, you can redistribute it and/or modify it under the terms of the Artistic License version 2.0.
