这个脚本有三个条件,如何根据参数选择条件
#!/usr/bin/perl
use strict; use warnings;
use FileHandle;
my($file1, $file2, $file3, $length_standard, $file4, $file5)=@ARGV; #assem.fa.fai evm.pep.NR.blast.tab.best.scaf.length BUSCO/run_BUSCO/full_table_BUSCO.tsv 2000 scaffold scaffold_and_length
my $in1=FileHandle->new("< $file1");
my $in2=FileHandle->new("< $file2");
my $in3=FileHandle->new("< $file3");
my $out1=FileHandle->new("> $file4");
my $out2=FileHandle->new("> $file5");
my(%hash1, %hash2);
while(<$in1>){
chomp;
my @arr1=split("\t", $_);
$hash1{$arr1[0]}=$arr1[1];
if($arr1[1]>$length_standard){
$hash2{$arr1[0]}=$arr1[1];
}
}
while(<$in2>){
chomp;
if($_!~/^#/){
my @arr2=split("\t", $_);
$hash2{$arr2[14]}=$arr2[15];
}
}
while(<$in3>){
chomp;
if($_=~/^EOG/){
my @arr3=split("\t", $_);
if(@arr3>3){
$hash2{$arr3[2]}=$hash1{$arr3[2]};
}
}
}
foreach my $key (keys %hash2){
print $out1 "$key\n";
print $out2 "$key\t$hash2{$key}\n";
}









网友评论