use strict; use warnings; my $letters = ; my @letters = $letters =~ /\w+/g; my %out; while() { next if /SampleID/; chomp; my @recs = split /\s+/; my $ctr = 2; for my $letter (@letters) { $out{$letter} .= "$letter\t".(join "\t", @recs[0,1,$ctr++])."\n"; } } for my $letter (@letters) { print $out{$letter}; } __DATA__ A C F SampleID Time ObsConc ObsConc ObsConc 5 24 2.27E+06 687.02 32521.94 5 168 1.92E+06 525.02 22198.44 5 12 2.94E+06 896.39 41331.61 5 -0.5 2.23E+06 942.34 40616.49 5 8 4.03E+06 1371.32 45863.69 6 24 1.02E+06 1057.89 46341.04 6 168 3.14E+06 4987.32 42166.08