[Bioperl-l] different syntaxes for SeqI constructor and Factory constructor?
Chris Fields
cjfields at uiuc.edu
Thu Dec 7 18:44:32 UTC 2006
On Dec 6, 2006, at 9:13 PM, zhihua li wrote:
> 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!
I agree that this should be more consistent. Does anyone know the
reasoning for this?
Christopher Fields
Postdoctoral Researcher
Lab of Dr. Robert Switzer
Dept of Biochemistry
University of Illinois Urbana-Champaign
More information about the Bioperl-l
mailing list