#!/usr/bin/perl use strict; use warnings; my %data; while (<>) { # reads 2 files from @ARGV - filenames are on the command line my ($id, $val) = split; push @{ $data{$id} }, $val; } for my $id (sort keys %data) { print join("\t", $id, @{ $data{$id} }), "\n"; }