use strict; use warnings; use Socket; my @IPs = qw{ 10.1.1.5 10.1.1.6 172.16.0.0 192.168.33.17 192.168.331.54 192.168.33.74 172.16.204.255 0.0.0.0 255.255.255.255 10.1.255.255 }; foreach my $IP ( @IPs ) { my $packed = inet_aton( $IP ); do { warn qq{Error: $IP is not a valid IPv4 address\n}; next; } unless defined $packed; my $numeric = unpack q{N}, $packed; my $isOdd = substr( $IP, -1 ) % 2; $numeric += ( $isOdd ? 1 : -1 ); my $newIP = inet_ntoa( pack( q{N}, $numeric ) ); printf qq{Old IP: %15s ... New IP: %15s\n}, $IP, $newIP; }