博主觉得写得还是有点复杂,求再简单一些的方法!
#!perl
use warnings;
use strict;
my %hash;
my %samp;
foreach my $f(@ARGV)
{
my $id = $f;
open FF, $f or die $!;
while(<FF>)
{
chomp;
my @tmp = split;
$hash{$tmp[0]} = 0;
$samp{$id}{$tmp[0]} = 0;
}
close FF;
}
my @name = sort {$a cmp $b} keys %samp;
print join "\t", "geneid", @name, "\n";
my %mat;
foreach my $k(keys %hash)
{
foreach my $s(sort {$a cmp $b} keys %samp)
{
if(exists $samp{$s}{$k})
{
push @{$mat{$k}}, "yes";
}else{
push @{$mat{$k}}, "no";
}
}
}
foreach my $g(keys %mat)
{
print join "\t", "$g", @{$mat{$g}}, "\n";
}