I'm also unclear on the nature of the data, and how this affects your goal. Do all input files have the same number of columns? The same number of lines? (Could an input file have a wrong number of columns or lines, and what should happen in that case?) How is the size of the output files (columns and lines) related to the sizes of the input files?
If the inputs are really consistent, something like this could work (maybe):
(not tested)#!/usr/bin/perl use strict; my @files = qw/foo bar/; # get file names from somewhere my @matrix; for my $f ( 0 .. $#files ) { open( IN, "<", $files[$f] ) or die "$files[$f]: $!\n"; while (<IN>) { my ( $line, @vals ) = split; for my $v ( 0..$#vals ) { $matrix[$v][$line][$f] = $vals[$v]; } } } for my $v ( 0..$#matrix ) { open( OUT, ">", "var.$v" ) or die "var.$v: $!\n"; for my $line ( @{$matrix[$v]} ) { print OUT join( "\t", $line, @{$matrix[$v][$line]} ), "\n"; } close OUT; }
(update: I see now that this differs only in style from the code suggested by dogz007 -- it's the same basic approach. Sorry about being redundant.)
In reply to Re: append to a line arrays read from N different input files
by graff
in thread append to a line arrays read from N different input files
by ioana007
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |