[ { 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. 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? Joachim