use Data::Dumper; get_column($sample1); sub get_column { my $ar = shift; my $all; foreach my $str ( @{$ar} ) { my @ar = (split " ",$str)[0,1,2]; push @$all, [ @ar ]; } my @clean; my $flag = $all->[0][2]+1; my $idx; my $diff; push @clean, $all->[0][0],$all->[0][1]; foreach my $i ( 1 .. @$all-1 ) { $idx = $all->[$i][2]; $diff = abs($idx-$flag); if ( $diff == 1 ) { push @clean, $all->[$i][1]; } else { push @clean, $all->[$i][0],$all->[$i][1]; } $flag = $idx; } print Dumper \@clean ; return ; }