in reply to Collapsing IP addresses, an approach?

Assuming that you always want to split your net it /0, /8, /16, /24 blocks as your example suggests, the following code will work (not golfed, could certainly be made shorter; test ed a bit, but not all edge cases):

use strict; use warnings; my @ips = qw(1.2.3.4 1.2.3.5 1.2.3.7); my $first = shift @ips; my @identicals = split m/\./, $first; for (@ips){ my @b = split m/\./; for my $i (0 .. $#identicals){ if ($b[$i] ne $identicals[$i]){ splice @identicals, $i; last; } } } my @rest = (0) x (4 - @identicals); my $net = join('.', @identicals, @rest) . '/' . (8 * @identicals); print "$net\n";

If you want it to work bit by bit instead, you have to map the IPs to binary representation first.

If somebody suggests a good module, you should use that instead.