About NetAddr::IP 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 inet_aton inet_ntoa ipv6_aton ipv6_ntoa ipv6_n2x ipv6_n2d inet_any2n inet_n2dx inet_n2ad inet_ntop inet_pton etc... NetAddr::IP::Util adds to above, mostly XS above + ip arithmetic addconst add128 sub128 bin2bcd bcd2bin ipv4to6 mask4to6 ipanyto6 maskanyto6 ipv6to4 bin2bcdn bcdn2txt bcdn2bin comp128 naip_gethostbyname (platform/socket independent) etc... 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 broadcast network addr mask masklen bits version cidr aton range numeric bigint contains within first last nth num NetAddr::IP adds to above wildcard short full full6 splitref split rsplit hostenum compact compactref coalesce re re6 enjoy...