#!/usr/bin/env perl use warnings; use strict; my $prev_first = 0; my $prev_second = 0; # you need to make use of this too while () { chomp; my ($first, $second, @data) = split /\t/; if ($first == $prev_first) { print " $second @data\n"; } else { print "$first - $second @data\n"; $prev_first = $first; } } __DATA__ 1 300 1_a 30 1_b 20 1 300 2_a 22 2_b 12 1 320 1_a 10 1_b 30 1 320 2_a 32 2_b 22 2 312 1_a 30 1_b 20 2 312 2_a 22 2_b 12 2 310 1_a 31 1_b 20 2 310 2_a 21 2_b 12 #### 1 - 300 1_a 30 1_b 20 300 2_a 22 2_b 12 320 1_a 10 1_b 30 320 2_a 32 2_b 22 2 - 312 1_a 30 1_b 20 312 2_a 22 2_b 12 310 1_a 31 1_b 20 310 2_a 21 2_b 12