HI Thanks for that! Insted of getting the position in reference to Query, I qould like to have them in reference to Subject. So, the output should be something like this.
14079 ref 487239 A/C.
my tweaks other than your suggestions are here
#!/usr/local/bin/perl -sl
#
use strict;
use Getopt::Long;
my $home = $ENV{'HOME'};
my($ID, $query, $off, $idi, $subject);
print "ID\tposition\tvariation\n";
while(<DATA>) {
next if $. <20;
if(m[^>]) {
($ID) = (split '\|',$_)[1];
#!/usr/local/bin/perl -sl
#
use strict;
use Getopt::Long;
my $home = $ENV{'HOME'};
my($ID, $query, $off, $idi, $subject);
print "ID\tposition\tvariation\n";
while(<DATA>) {
next if $. <20;
if(m[^>]) {
($ID) = (split '\|',$_)[1];
}
if(/^\s+Identities/){
my($identity, undef) = split/,/ ;
($idi) = $identity =~ /\sIdentities\s\=\s\d{3}\/\d{3}\s\((\d{2,3}\%
+)\)$/;
}
if($idi eq "95%") {
if(m/^Query/) {
($query) = m[^Query\s+(\d+)];
my $top = substr $_, 15;
my $pipes = substr <DATA>,15;
my $bot = substr <DATA>, 15;
my $p = 0 ;
while ($p = 1+index $pipes,' ', $p) {
printf "%20s\t%d\t%1s/%1s\n",$ID,$query+$p, substr( $top, $p-1, 1
+),substr( $bot, $p-1, 1 );
}
}
}
}
}
if(/^\s+Identities/){
my($identity, undef) = split/,/ ;
($idi) = $identity =~ /\sIdentities\s\=\s\d{3}\/\d{3}\s\((\d{2,3}\%
+)\)$/;
}
if($idi eq "95%") {
if(m/^Query/) {
($query) = m[^Query\s+(\d+)];
my $top = substr $_, 15;
my $pipes = substr <DATA>,15;
my $bot = substr <DATA>, 15;
my $p = 0 ;
while ($p = 1+index $pipes,' ', $p) {
printf "%20s\t%d\t%1s/%1s\n",$ID,$query+$p, substr( $top, $p-1, 1
+),substr( $bot, $p-1, 1 );
}
}
}
}
Thanks. |