use strict ; use warnings ; my @data = sort ; my %min ; foreach (@data) { my ($col1, $col2, $col3) = split /\s+/, $_ ; $min{$col2} = $col1 if (! defined $min{$col2}) ; print $_ if ($col1 eq $min{$col2}) ; } __DATA__ -1 2 ereu 1 2 rerer 2 2 rere 3 2 eee 3 2 wwwe 9 2 qqewew 9 2 vvvgf -1 2 wwwew 4 3 wwew -9 3 wwss 6 3 jjuu 7 3 kkii 7 3 ggtyu 8 3 ffder 1 4 rrtrr 1 4 rree