in reply to Merging Columns from multiple files into a single file
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";
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Merging Columns from multiple files into a single file
by ikhan (Initiate) on Oct 20, 2015 at 05:18 UTC | |
by poj (Abbot) on Oct 20, 2015 at 06:33 UTC | |
by AppleFritter (Vicar) on Oct 20, 2015 at 10:09 UTC |