#!/usr/bin/perl use warnings; use strict; @ARGV = map glob( 'RESULTS_FILE' . ( '[0-9]' x $_ ) ), 1 .. 4; my @headers = ( 'NAME', @ARGV ); my %data; while ( <> ) { my ( $name, $value ) = split; push @{ $data{ $name } }, $value; } print join( "\t", @headers ), "\n"; for my $name ( keys %data ) { print join( "\t", $name, @{ $data{ $name } } ), "\n"; }