- 论坛徽章:
- 1
|
稍做修改就行,没什么大的问题!
#!/usr/bin/perl
use warnings;
use strict;
open IN,"file1"or die $!;
open PI,"file2"or die $!;
open OUT,">file3.xls"or die $!;
my (%hash,%arry,%yy);
my ($nu,$ku)=('','');
my $hang1=<IN>;
chomp($hang1);
while(<IN>){
chomp;
my @line=split/\t/,$_;
$nu=@line;
my $hk=$line[1];
for(my $i=2;$i<@line;$i++){
$hk.="\t".$line[$i];
}
$hash{$line[0]}=$hk;
$yy{$line[0]}=1;
}
close IN;
my $hang2=<PI>;
chomp($hang2);
while(<PI>){
chomp;
my @line=split/\t/,$_;
$ku=@line;
my $ty=$line[1];
for(my $u=2;$u<@line;$u++){
$ty.="\t".$line[$u];
}
$arry{$line[0]}=$ty;
$yy{$line[0]}=1;
}
close PI;
print OUT "$hang1\t$hang2\n";
foreach my $key(keys %yy){
if($hash{$key} and $arry{$key}){
print OUT "$key\t$hash{$key}\t$arry{$key}\n";
}elsif(!$hash{$key} and $arry{$key}){
print OUT "$key\t";
for(my $i=1;$i<$nu;$i++){
print OUT "0\t";
}
print OUT "$arry{$key}\n";
}elsif($hash{$key} and !$arry{$key}){
print OUT "$key\t$hash{$key}";
for(my $p=1;$p<$ku;$p++){
print OUT "\t0";
}
print OUT "\n";
}
}
close OUT;
回复 5# owwa
|
|