#!/usr/bin/perl use strict; my($start, $end, $id, %range); while(<>) { chop; ($start, $end, $id)=split(','); $start=pack("C4", (split('\.',$start))); $end=pack("C4", (split('\.',$end))); if($range{$id}) { my($os, $oe)=@{$range{$id}}; $os=$start if($start lt $os); $oe=$end if($end gt $oe); @{$range{$id}}=($os, $oe); } else { @{$range{$id}}=($start, $end); } } foreach my $r ( sort keys %range ) { printf "%vd,%vd,%s\n", @{$range{$r}},$r; }