NAME

Net::Works - Sane APIs for IP addresses and networks

VERSION

version 0.01

DESCRIPTION

The NetAddr::IP module is very complete, correct, and useful. However, it's API design is a bit crufty. This distro provides wrappers around NetAddr::IP that aim to address the biggest problems with that module's API, as well as adding some additional features.

This distro contains two module, Net::Works::Address and Net::Works::Network.

BIG INTEGERS

If you're using this module to work with IPv6 addresses, then you'll end up creating big integers at some point. We strongly recommend that you install Math::BigInt::GMP or Math::BigInt::Pari. The default pure Perl implementation of big integers can be very, very slow.

Net::Works VERSUS NetAddr::IP

Here are some of the key differences between the two distributions:

  • Separation of address from network

    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.

  • Multiple constructors

    Net::Works allows you to construct an IP address from a string ("1.2.3.4") or an integer (1097).

  • 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->first() and $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_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.

  • Does less

    This distro does not wrap every method provided by NetAddr::IP. Patches to add more wrappers are welcome, however.

BUGS

Please report any bugs or feature requests to bug-net-works@rt.cpan.org, 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.

AUTHORS

  • Dave Rolsky <autarch@urth.org>

  • Olaf Alders <olaf@wundercounter.com>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2012 by MaxMind, Inc..

This is free software, licensed under:

  The Artistic License 2.0 (GPL Compatible)