[Bioperl-l] $_ assignment question
Jason Stajich
jason at cgt.duhs.duke.edu
Thu Jul 31 10:15:53 EDT 2003
> This might be usually harmless, but when a caller is using $_ then
> trouble can occur.
>
> I ask as there seems to be a lot of use of the idioms:
>
> return unless $_ = shift;
>
> and:
>
> while ($_=$self->_readline()) {
> }
>
> Is there some valid Bioperl reason that local can't be called on $_
> before the assignment.
>
> Usually it's easy to see why it's been done, but the problem comes with
> some of the while() loops that use the 2nd idiom and have huge amounts
> of code in them, including many method calls which could depend on $_
> being set before being called (even though this would be a violation of
> data hiding) and I'm too Lazy to check them without first asking.
>
No reason not to change it - local($_) should be done. If there are
problems with someone being lazy enough to actually depend on $_ being
set by a called method hopefully the tests will be good enough to pick
them up.
Code audit & cleanup is enthusiastically welcomed. Lots of things have
been written by a pretty wide range of perl experience so anyone brave
enough to start doing some systematic cleanups gets major beers points
promised...
If you are going to be making a ton of changes I would rather they go to
CVS directly than having to juggle hundreds of patch requests. Give us a
sense of what the magnitude of bug fixes will be if/when you dive in.
> Also, is there any reason why indirect invocation of methods is being
> used in some places, according to Damian Conway [1], this is a bad idea.
Java/C++ trained programmers with bad habits...
>
> So are there any Bioperl specific reasons why its being used?
>
> Cheers
>
> [1] Object Oriented Perl, Damian Conway - p98
>
--
Jason Stajich
Duke University
jason at cgt.mc.duke.edu
More information about the Bioperl-l
mailing list