[Bioperl-l] different syntaxes for SeqI constructor and Factory constructor?

zhihua li lzhtom at hotmail.com
Thu Dec 7 03:13:47 UTC 2006


Hi netters,

Recently I found this:

For constructing a new SeqI object, I had to write:
$seq_obj=Bio::SeqIO->new(
      -file => '/home/myfile',
      -format => 'Fasta');              #Note the dash before the two 
arguments.

If I omitted the dash:
$seq_obj=Bio::SeqIO->new(
     file => '/home/myfile',
     format => 'Fasta');
I'd get error:
MSG: Unknown format given or could not determine it []
STACK Bio::SeqIO::new /usr/lib/perl5/site_perl/5.8.7/Bio/SeqIO.pm:377

So it seems to me that the dashes before the arguments are essential.  
However, when I tried to build a factory for StandaloneBlast, I found the 
other way around.

If the script had the dash:
$blast_obj=Bio::Tools::Run::StandAloneBlast->new(
             -program => 'blastn',
             -database => '/home/mydatabase');

I'd get the error message: 
MSG: Unallowed parameter: - !
STACK Bio::Tools::Run::StandAloneBlast::AUTOLOAD 
/usr/lib/perl5/site_perl/5.8.7/Bio/Tools/Run/StandAloneBlast.pm:433
STACK Bio::Tools::Run::StandAloneBlast::new 
/usr/lib/perl5/site_perl/5.8.7/Bio/Tools/Run/StandAloneBlast.pm:400

If I left out the dash by saying:
$blast_obj=Bio::Tools::Run::StandAloneBlast->new(
             program => 'blastn',
             database => '/home/mydatabase');

Everyting is fine.

Now I'm confused. Why sometimes I have to add the dash, while sometimes I'm 
not allowed to?

Thanks in advance!

_________________________________________________________________
与联机的朋友进行交流,请使用 MSN Messenger:  http://messenger.msn.com/cn  




More information about the Bioperl-l mailing list