{ my $static = "Persistant"; sub mytest { return $static; } } print mytest(), "\n";
This works because even though $static has fallen out of scope in the outtermost block (the file, in this case), it is still in scope whenever the subroutine is called, because the sub was declared (and defined, in this case) where the scope is still active. Essentially, though the program's execution continues past the close of $static's scope, it never gets reaped because its block is still relevant to the globally declared sub, 'mytest'.
But what if I want the function definition, and whatever clutter it took to derive the value stored in $static, to appear at the bottom of the script, somewhere after my use of mytest() in print mytest(), "\n";?
If, for reasons of asthetic style, I prefer to have the main execution block at the top, and subroutine definitions at the bottom (which works fine unless I'm trying to maintain a static, non-global variable for a sub), is there no way to satisfy both my sense of asthetics, and function at the same time by allowing the definition of functions that use static variables, and their surrounding blocks which give scope to their static variables, to appear later on?
Dave
"If I had my life to do over again, I'd be a plumber." -- Albert Einstein
In reply to Static function variables without top declaration? by davido
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |