Re: Running gitweb under mod_perl
- From
- Dennis Stosberg <dennis@stosberg.net>
- Date
- Aug 24, 2006, 19:32 UTC
- Message-ID
- <20060824193220.G4a28fdc4@leonov.stosberg.net>
- In-Reply-To
- <eckor9$jje$1@sea.gmane.org>
Jakub Narebski wrote:
Show 13 quoted lines
> By the way, does the "static" variables works under mod_perl? i.e.
>
> {
> my $private_var = "something"
>
> sub some_sub {
> ...
> }
>
> sub other_sub {
> ...
> }
> }Depends on what you expect. The variable will remain shared between those subs over successive executions, but it will not be reinitialised to "something" -- at least not visibly to the subs:
On the first invocation, $private_var is initialised and the two subroutines are created. Internally, they refer to the _instance_ of $private_var. The next time the script is run by mod_perl, $private_var gets initialised again, but the subs are persistent and still refer to the old instance. _Their_ copy of the variable will still be shared between them, but it will not be reset to "something".
So it should work, but I would avoid such a construction if possible.
Apache::Registry wraps the whole script in another function, which is called on each request, so your piece of code really looks somewhat like this:
#!/usr/bin/perl
sub handler {
# do something
{
my $a = 'A';
sub sub_a { $a .= 'B' }
sub sub_b { print $a."\n" }
}
sub_a();
sub_b();
}
for(1..10) { handler() }Regards, Dennis