#!/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 () { 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; }