Thanks once again for your input!
When I try running my script with the following test set , it does not print anything in the output files, instead prints the data onto the screen!
>001.b1 gnl|ti|10009
GCTAGTGCTAGCTAGCTAGCATCGATCGAT
>002.b1 gnl|ti|10010
CAGTCAGTCGTAGTGCTAGCTGATGCTCGT
>003.b1 gnl|ti|10011
CGATCGTAGTCGTATCGATGCTGACGTAGG
>004.b1 gnl|ti|10012
CGATGCTAGTCGTAGTGCTAGTGCTATGTC
>005.b1 gnl|ti|10013
CAGTCGTAGTCGATGCTGTATCATAGCGTA
>006.b1 gnl|ti|10014
ACAGTGCTAGCTGATCGTAGCTGAGCGGAG
>007.b1 gnl|ti|10015
AGCTAGCTGATGTCGATGCTGATCGTGATG
>008.b1 gnl|ti|10016
CGATGCTGATGCTGATGCTGTAGCTATACG
>008.g1 gnl|ti|10017
GCTAGCTAGTCGTAGTCGTAGTGTCGTAGG
>009.b1 gnl|ti|10018
CGATGCTAGTCGTAGTCGTAGCTGATGCGT
>010.b1 gnl|ti|10019
CGATCGTAGTCGTAGCTGATGCTGTAGCTG
>010.g1 gnl|ti|10020
CGTAGCTGATCGTAGCGTGACTGTAGCTGG
>011.b1 gnl|ti|10021
CGTAGCTGATGCTGATCGTAGCTAGTCGAT
>011.g1 gnl|ti|10022
CAGCTGATCGTAGCTGATGCTGATGTGTGT
I thought maybe splitting the header and data might help. But as it turns out, I am not going the right way.
The output I get from the script is:
>001.b1 gnl|ti|10009
GCTAGTGCTAGCTAGCTAGCATCGATCGAT
>002.b1 gnl|ti|10010
CAGTCAGTCGTAGTGCTAGCTGATGCTCGT
>003.b1 gnl|ti|10011
CGATCGTAGTCGTATCGATGCTGACGTAGG
>004.b1 gnl|ti|10012
CGATGCTAGTCGTAGTGCTAGTGCTATGTC
>005.b1 gnl|ti|10013
CAGTCGTAGTCGATGCTGTATCATAGCGTA
>006.b1 gnl|ti|10014
ACAGTGCTAGCTGATCGTAGCTGAGCGGAG
>007.b1 gnl|ti|10015
AGCTAGCTGATGTCGATGCTGATCGTGATG
>008.b1 gnl|ti|10016
CGATGCTGATGCTGATGCTGTAGCTATACG
>008.g1 gnl|ti|10017
GCTAGCTAGTCGTAGTCGTAGTGTCGTAGG
>009.b1 gnl|ti|10018
CGATGCTAGTCGTAGTCGTAGCTGATGCGT
>010.b1 gnl|ti|10019
CGATCGTAGTCGTAGCTGATGCTGTAGCTG
>010.g1 gnl|ti|10020
CGTAGCTGATCGTAGCGTGACTGTAGCTGG
>011.b1 gnl|ti|10021
CGTAGCTGATGCTGATCGTAGCTAGTCGAT
>011.g1 gnl|ti|10022
CAGCTGATCGTAGCTGATGCTGATGTGTGT
My script for the same is:
......
s/^>//mg;
my ($name) = /^([^\n]+)/;
if($hash{$name} == 10){
select FILE1;
}
if($hash{$name} == 20){
select FILE2;
}
if($hash{$name} == 30){
select FILE3;
}
}
#print ">$_";
my $output = $_;
print ">$output\n";
Thanks again!
|