IPAddress(3pm) | User Contributed Perl Documentation | IPAddress(3pm) |
Net::IPAddress - Functions used to manipulate IP addresses, masks and FQDN's.
use Net::IPAddress;
@ISA = qw(Net::IPAddress);
"Net::IPAddr" is a collection of helpful functions used to convert IP addresses to/from 32-bit integers, applying subnet masks to IP addresses, validating IP address strings, and splitting a FQDN into its host and domain parts.
No rocket science here, but I have found these functions to very, very handy. For example, have you ever tried to sort a list of IP addresses only to find out that they don't sort the way you expected? Here is the solution! If you convert the IP addresses to 32-bit integer addresses, they will sort in correct order.
"$ipnum = ip2num("10.1.1.1");" $ipnum is 167837953.
"$IP = num2ip(167837953);" $IP is "10.1.1.1".
"$valid = validaddr("10.1.2.1");" # returns true
"$valid = validaddr("10.1.2.");" # returns false!
If you have your own IP address validator, try the last one. Most will incorrectly compute that as a valid address.
Examples
"$subnet = mask("10.21.4.22","255.240.0.0");" # $subnet = "10.16.0.0"
"$subnet = mask(167837953,"255.255.255.0");" # $subnet = 167837952>
This function, when used with the others, is very useful for computing IP addresses. For example, you need to add another server to a subnet that an existing server is on. You want the new server to be the ".17" address of a /24 subnet. This is done easily in the following example:
"$server = "10.8.9.12";" "$newserver = num2ip(ip2num(mask($server,24)) + 17);" "print "New server IP is $newserver\n";"
"New server IP is 10.8.9.17"
The following code does exactly the same thing:
"use Net::IPAddress;"
"$server = "10.8.9.12";" "$newserver = num2ip(mask(ip2num($server),24) + 17);" "print "New server IP is $newserver\n";"
"($host,$domain) = fqdn("www.cpan.perl.org");" # $host = "www", $domain = "cpan.perl.org"
"Net::IPAddress" exports five functions "ip2num", "num2ip", "validaddr", "mask", and "fqdn".
Scott Renner <srenner@mandtbank.com>, <srenner@comcast.net>
Copyright(c) 2003-2005 Scott Renner. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
2022-10-13 | perl v5.34.0 |