chomp( my $header = <> ); my @headers = $header =~ /\S+/g; my @fhs; for (@headers) { my $qfn = "$_.dat"; open(my $fh, '>', $qfn) or die("Can't create file \"$qfn\": $!\n"); push @fhs, $fh; } while (<>) { chomp; my @fields = split(/\s+/, $_); for (0..$#fhs) { printf({ $fhs[$_] } "%s %s\n", $fields[$_*2 + 0], $fields[$_*2 + 1], ); } }