develooper Front page | perl.fwp | Postings from July 2003

Re: my if?

Thread Previous | Thread Next
From:
Abigail
Date:
July 3, 2003 03:35
Subject:
Re: my if?
Message ID:
20030703103245.GA29289@abigail.nl
On Thu, Jul 03, 2003 at 05:51:00AM +0100, Pense, Joachim wrote:
> 
> [   { my $staticvar; sub mysub {...} }    versus   sub mysub {static
> $staticvar;}   ]
> 
> Abigail and others point that the first version is more flexible than the
> second one, which is true. Reason: the first construct allows subs to share
> the statics. On the other hand, there is a psychological advantage to the
> second version, which would let me prefere it where possible if there was a
> "static" construct:
> 
> I think is contra-intuitive for many programmers anyway: I am trained to
> consider everything within curly braces as invisible from the outside. So it
> becomes less clear in the first version that mysub is in fact global to the
> program.

I think your training is to fault. Consider that files are a lexical
scope as well, as if their were braces. Were subs not visible outside
of a scope, we wouldn't have modules and objects as we have them now.

> Is there a sensible way of combining the advantages, that is: defining subs
> outside of blocks that share static variables anyway? Whatever I can think
> of would be even worse than version one (more complicated, less intuitive,
> more error-prone), so has anyone else thought of a concept? 


You could always use a package variable - but those would be visible
to other subs as well. But since you don't want to group subs in a
scope anyway...


Abigail

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About