in reply to Re: A metaclosure? (use static vars)
in thread A metaclosure? Howto?

There are lots of cases where the BEGIN fixes problems. mod_perl is one. Several others boil down to variations on this problem:

#!/usr/bin/perl -w use strict; print "Starts out false: ", boolToggle(), $/; print "Then is true: ", boolToggle(), $/; print "Then false: ", boolToggle(), $/; print "Then true: ", boolToggle(), $/; # BEGIN # Remove first "#" from this line to fix bug. { my $static= 1; sub boolToggle { $static= $static ? 0 : 1; return $static; } } print "Then opposite of last time: ", boolToggle(), $/;
which produces:
Starts out false: 1 Then is true: 0 Then false: 1 Then true: 0 Then opposite of last time: 0
Trying to topologically sort your subroutine declarations to avoid this problem is probably not a good solution.

        - tye (but my friends call me "Tye")