use strict; use warnings; my @col1 = split ' ', ; ; my @rows = map { my @row = split; \@row } ; my $i = 2; for my $col (@col1) { print "$col\t$_->[0]\t$_->[1]\t$_->[$i]\n" for @rows; $i++; } __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