[Bioperl-l] Bioperl objects and subroutines
Stefan Kirov
skirov at utk.edu
Wed May 12 10:43:54 EDT 2004
Hi Jonathan,
I believe what you should do is:
my $seq=new Bio::Seq (-seq=>'acagtcgatgc', -id=>'blabla');
somesub($seq);
sub somesub {
my $seq=shift;
print $seq->id;
}
And I think you should not be blessing a blessed reference. If you have
a debugger like ptkdb (perl -d:ptkdb somescript.pl) take a look at what
actually $seq contains. Also depending on how you call the sub, @_[0]
may contain the package name or other data. @_ is a tricky bussiness, be
carefult with it. Caling &somesub makes current @_ available to somesub
(which I don't know what is in your script). Try subroutine($seqobject)
instead like in the above example.
Hope this helps
Stefan
Jonathan Manning wrote:
>Hi all,
>
>Sorry if this seems more like a general perl question, but I can't find
>the answer I need in my books.
>
>How do I pass an object (specifically a Bio::Seq object) to a perl
>subroutine? I thought object variables were references anyway, but
>passing those variables didn't work. At the moment I pass a reference
>like:
>
>$reference = \$seqobject;
>&subroutine($reference);
>
>And within the subroutine attempt to access like:
>
>$sequence = bless @_[0];
>
>But this doesn't work either, and I can't access the object methods.
>
>Obviously I'm no perl veteran, and don't really know how to do it.
>Thanks in advance for any help.
>
>Jon
>
>_______________________________________________
>Bioperl-l mailing list
>Bioperl-l at portal.open-bio.org
>http://portal.open-bio.org/mailman/listinfo/bioperl-l
>
>
More information about the Bioperl-l
mailing list