You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by Rafael Kitover <ca...@debian.org> on 2000/12/28 22:15:12 UTC

$r->dir_info and BEGIN {}?

We obviously do not have access to a request object during a BEGIN {}
block, but if I have a bunch of PerlSetVar things that I don't want to
re-initialize every time handler() is called for speed reasons, what is
the most elegant way to have an initialization sub that needs access to
things set in PerlSetVar? Just something like:

my $is_initialized = 0;

sub handler($) {
	...
	unless ($is_initialized) {
		initialize($r);
		$is_initialized = 1;
	}
	...
}

sub initialize($) {
	...
	do stuff with $r->dir_info("thingie")
	...
}

The problem with this is that initialize would be called for every
child, though this is better than initializing stuff at every request.

TIA

-- 
Do what thou wilt shall be the whole of the Law.
Love is the law, love under will.

Re: $r->dir_info and BEGIN {}?

Posted by Jim <jh...@vialogix.com>.
How about:

package ModPerlPackage;

use vars qw( $is_init );
$is_init = 0;

sub handler($) {
        ...
        $is_init = initialize($r) unless $is_init;
        ...
}

Just making initialize return a true value on success.

There's undoubtedly a much more subtle solution...

HTH

Jim



Rafael Kitover wrote:
> 
> We obviously do not have access to a request object during a BEGIN {}
> block, but if I have a bunch of PerlSetVar things that I don't want to
> re-initialize every time handler() is called for speed reasons, what is
> the most elegant way to have an initialization sub that needs access to
> things set in PerlSetVar? Just something like:
> 
> my $is_initialized = 0;
> 
> sub handler($) {
>         ...
>         unless ($is_initialized) {
>                 initialize($r);
>                 $is_initialized = 1;
>         }
>         ...
> }
> 
> sub initialize($) {
>         ...
>         do stuff with $r->dir_info("thingie")
>         ...
> }
> 
> The problem with this is that initialize would be called for every
> child, though this is better than initializing stuff at every request.
> 
> TIA
> 
> --
> Do what thou wilt shall be the whole of the Law.
> Love is the law, love under will.
> 
>   ------------------------------------------------------------------------
>    Part 1.2Type: application/pgp-signature