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

Re: my if?

July 3, 2003 03:35
Re: my if?
Message ID:
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 Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About