use warnings; use strict; my %filehash; my @files = qw(F1.dat F2.dat); for my $filename (@files) { open my $filehandle, '<', $filename or die "Can't open $filename $!\n"; while (<$filehandle>) { my ( $word, $remainder ) = split ' ', $_, 2; $filehash{$word} = $remainder; } close $filehandle; } open my $merged, '>', 'merge.dat' or die "Can't open merge.dat:$!\n"; for ( sort keys %filehash ) { print $merged "$_ $filehash{$_}"; }