in reply to Unsorted IP Addr list to sorted IP list with ranges

use Socket; my @ip = qw( 10.0.4.100 10.0.4.99 10.3.5.21 10.0.4.101 10.15.21.6); @ip = do { my $prev; map { defined($prev) && $prev == $_ ? () : ( $prev = $_ ) } sort { $a <=> $b } map { unpack "N", inet_aton $_ } @ip; }; for my $i ( 0 .. $#ip ) { if (!$i || $i == $#ip || $ip[$i-1] != $ip[$i] - 1 || $ip[$i+1] != $ip[$i] + 1 ) { print $ip[$i-1] == $ip[$i] - 1 ? "-" : " " if $i; print inet_ntoa( pack "N", $ip[$i] ); } } print "\n";

Replies are listed 'Best First'.
Re: Re: Unsorted IP Addr list to sorted IP list with ranges
by LordWeber (Monk) on Sep 11, 2003 at 16:30 UTC