A crap B crap C crap D crap E crap #### A crap B C crap D crap crap E 1 2 3 4 5 6 7 8 9 11 12 13 14 15 16 17 18 19 21 22 23 24 25 26 27 28 29 #### open IN, "){ $sID{$1} = 1 if /^(\w+)\t/; } close IN; open IN, "); while(@a = split /\t|$/, ){ print join "\t", @a[@cols],"\n"; } close IN; #### 1 3 4 6 9 11 13 14 16 19 21 23 24 26 29