use strict; my %info; for (1..50){ process_file($_); } print "NAME\t"; print "$_\t" for (1..50); print "\n"; for my $k (sort keys %info){ print "$k\t"; print "$info{$k}->[$_]\t" for (1..50); print "\n"; } sub process_file{ my $filenbr = shift; open my $f, "<" , "RESULT_FILE$filenbr" or die "Cannot read file $_\n$!"; while(<$f>){ my ($name,$val) = split; $info{$name}->[$filenbr] = $val; } close $f; }