# usr/bin/perl -w
 
use strict;
use warnings;
use Bio::SeqIO;
use Bio::Seq;
use Bio::Tools::Run::StandAloneBlast;
use Bio::SearchIO;
use Bio::Search::Result::BlastResult ;
use Bio::Tools::Run::StandAloneBlastPlus;
use Bio::SearchIO::Writer::TextResultWriter;

# create a temp database from my genome

$fac = Bio::Tools::Run::StandAloneBlastPlus->new(
  -db_data => 'saudint.fa',
  -create => 1
);

#go from the first aa seq to the next in a multiple fasta file
 
$seqio_obj = Bio::SeqIO->new(-file => "allexoprot1.Fasta", -format => "fasta" );
$seq_obj = $seqio_obj->next_seq;

#preform a blast search

$result = $fac->tblastn( -query => '$seq_obj',
                        -outfile => 'report.bls',
                        -method_args => [ '-evalue' => 100 ]);
$file = $fac->blast_out;

$fac->cleanup;

#preserve only the best scoring parts

  my $in = Bio::SearchIO->new(-format => 'blast',
			     -file   => shift @ARGV);

  my $writer = Bio::SearchIO::Writer::TextResultWriter->new();
  my $out = Bio::SearchIO->new(-writer => $writer -file   => ">results.txt");
  $out->write_result($in->next_result);

   sub hsp_filter {
       my $hsp = shift;
       return $hsp->percent_identity > 98;
   }
   my $writer = Bio::SearchIO::Writer::TextResultWriter->new(
       -filters => { 'HSP' => \&hsp_filter }  
      );