You did ask for a one-line script to solve it. That's what a one-line script looks like in Perl: obscure and hard to parse.
You'd be much better off doing it with multiple lines:
use strict;
use warnings;
my %stuff;
while (my $line = <>) {
chomp $line;
my @word = split(q{ }, $line);
push (@{$stuff{$word[0]}}, @word[1..$#word]);
}
for my $key (keys %stuff) {
print "$key @{$stuff{$key}}\n";
}
Example run:
$ cat file1
Adam 1 2 3
Eve 4 5 6
$ cat file2
Adam 4 5 6
Eve 7 8 9
$ ./merge.pl file1 file2
Adam 1 2 3 4 5 6
Eve 4 5 6 7 8 9