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.
Net::Works VERSUS NetAddr::IP
Here are some of the key differences between the two distributions:
Separation of address from network
Net::Worksprovides 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 use. Whenever you want a single IP you're always stuck checking that the object you're working with is the size of a single address subnet.
Net::Works allows you to construct an IP address from a string ("192.0.2.1") or an integer (3221225985) using separate constructors.
Next & previous IP
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.
Constructors throw exceptions
If you pass bad data to a constructor you'll get an exception.
Sane iterator and first/last
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. Similarly, the
$network->last()do not return different results for different sized networks.
Split a range into subnets
The Net::Works::Network class provides a
Net::Works::Network->range_as_subnetsmethod 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
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
Bugs may be submitted through https://github.com/maxmind/Net-Works/issues.
- Alexander Hartmaier email@example.com
- Dave Rolsky firstname.lastname@example.org
- Greg Oschwald email@example.com
- Mark Fowler firstname.lastname@example.org
- TJ Mather email@example.com
- William Stevenson firstname.lastname@example.org
COPYRIGHT AND LICENSE
This software is copyright (c) 2017 by MaxMind, Inc.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.