#!/usr/bin/perl -w
use strict;
use Tie::File;
my ($file1,$file2,$fileout) = @ARGV;
tie my @ry1,"Tie::File",$file1 or die "$file1:$!";
tie my @ry2,"Tie::File",$file2 or die "$file2:$!";
tie my @out,"Tie::File",$fileout or die "$fileout:$!";
my %een=();
my %dat=();
map{ $dat{$_}=[]} grep !$een{$_}++,map { (split(/[\s\t\n]+/,$_))[0] }
+(@ry1,@ry2);
foreach my $line((@ry1,@ry2)){
my ($key,@vals)=split(/[\s\t\n]+/,$line);
push @{$dat{$key}},@vals;
}
@out=map { join("\t",($_,@{$dat{$_}})) } keys %dat;
untie @out;
untie @ry2;
untie @ry1;
Using your input files this was tested and gave output that you are looking for...
Peter L. Berghold -- Unix Professional
Peter -at- Berghold -dot- Net; AOL IM redcowdawg Yahoo IM: blue_cowdawg
|