Net::Works - Sane APIs for IP addresses and networks
The NetAddr::IP module is very complete, correct, and useful. However, its API design is a bit crufty. This distro provides an alternative API that aims to address the biggest problems with that module's API, as well as adding some additional features.
NOTE: This distro's APIs are still in flux. Use at your own risk.
Here are some of the key differences between the two distributions:
Net::Works provides two classes,
one for single IP addresses and one for networks (and subnets).
With NetAddr::IP a single address is represented as a /32 or /128 subnet.
This is technically correct but can make the API harder to as whenever you want a single IP you're always stuck checking that the object you're working with is the size subnet.
Net::Works allows you to construct an IP address from a string ("18.104.22.168") or an integer (1097) using separate constructors.
You can get the next and previous address from Net::Works::Address object, regardless of whether or not that address is in the same subnet.
If you pass bad data to a constructor you'll get an exception.
The iterator provided by Net::Works::Network has no confusing special cases.
It always returns all the addresses in a network,
including the network and broadcast addresses.
$network->last() do not return different results for different sized networks.
The Net::Works::Network class provides a
Net::Works::Network->range_as_subnets method that takes a start and end IP address and splits this into a set of subnets that include all addresses in the range.
This distro does not support every method provided by NetAddr::IP. Patches to add more features are welcome, however.
Please report any bugs or feature requests to
or through the web interface at http://rt.cpan.org.
I will be notified,
and then you'll automatically be notified of progress on your bug as I make changes.
This software is copyright (c) 2013 by MaxMind, Inc..