At some point a user wrote and asked the difference between
NetAddr::IP and NetAddr::IP::Lite
NetAddr::IP::Lite contains only "basic" IP address operations to create IP objects,
print or return their characteristics, do basic IP arithmetic, etc... a lot of
which is implemented in XS in its sub-classes, whereas NetAddr::IP contains complex
operations on nets, net ranges , etc... all implemented in perl. If you don't use
those, you don't need the overhead of loading them, the autoloader, etc...
Likewise, NetAddr::IP::Utilities and NetAddr::IP::InetBase exist to provide
"very basic" ipv4 and ipv6 utilities without the overhead of their superclasses
for module writers need to work with ipv4 & ipv6 "numbers" but do not need object
oriented overhead or functionality.
Take a brief look at the SRC of each to see what is supported in each without
having to wade through the man pages to figure out where the overlap is.
Basically the modules are broken down into these functional areas that cover
various aspects of manipulating IP numbers.
NetAddr::IP::InetBase mostly XS
net to text conversion routines
NetAddr::IP::Util adds to above, mostly XS
above + ip arithmetic
naip_gethostbyname (platform/socket independent)
NetAddr::IP::Lite adds to above
mostly 1 or 2 line functions and/or calls to sub classes
all the "new" functions
all overload functions ( + - ++ -- = print eq ne == > >= < <= cmp)
"copy" (clone rather than reference)
return of IP parameters such as
NetAddr::IP adds to above