You cannot easily write to columns in a file; text file access is inherently row-based. I reckon there may well be CPAN modules to access columns in files, but if you seek to combine data from several files it's a much better idea to read all the input files and then write to the output file once, e.g.:
#!/usr/bin/perl
use Modern::Perl '2014';
# generate some filenames
my @inputfiles = map { "data$_.txt" } 1 .. 3;
my $inputdata = {};
# read files into $inputdata
foreach my $filenumber (0 .. $#inputfiles) {
open my $HANDLE, "<", $inputfiles[$filenumber]
or die "Cannot open $inputfiles[$filenumber]: $!\n";
while(<$HANDLE>) {
chomp;
my ($freq, $data) = split /\s+/, $_, 2;
$inputdata->{$freq}->[$filenumber] = $data;
}
close $HANDLE
or warn "Cannot close $inputfiles[$filenumber]: $!\n";
}
# write combined output
open my $OUTPUT, ">", "combined.txt"
or die "Cannot open combined.txt: $!\n";
foreach my $freq (sort keys %{ $inputdata }) {
say $OUTPUT "$freq ", join " ", @{ $inputdata->{$freq} };
}
close $OUTPUT
or warn "Cannot close combined.txt: $!\n";