> Don't use FindBin. It's not compatible with mod_perl since it uses
> BEGIN block which is executed only ones and for correct work it should
> be executed every time when the request comes.

That's correct that FindBin doesn't work under mod_perl. But the reason is
different. It doesn't work because its invocation happens during the load
of the module itself and as any other module under mod_perl it's loaded
only once per process.

It has nothing to do with BEGIN block.

A possible workaround is to mess with %INC:

delete $INC{FindBin};
use FindBin;

Anyway, thank you for this spot. I've offered this solution in the guide
and didn't know it has a problem. I'll update the guide.


> On Thu, Dec 09, 1999 at 12:03:56PM -0800, Joao Fonseca wrote:
> > This message was sent from Geocrawler.com by "Joao Fonseca" 
><[EMAIL PROTECTED]>
> > Be sure to reply to that address.
> > 
> > Hello,
> > 
> > I'm having problems migrating a site to mod_perl,
> > using the Apache::Registry module.
> > Scenario:
> > 
> > -I have 2 CGIs (cgi1 and cgi2).
> > -CGI1 is a soft link, and uses FindBin:
> >     use FindBin;
> >     use lib "$FindBin::RealBin";
> >     use MyLib;
> > 
> > -CGI2 is not a soft link and also uses FindBin;
> > 
> > After running several times, CGI1 sometimes fails
> > with:
> > Can't locate MyTag.pm in @INC...
> > 
> > After debugging, I found out that FindBin thinks
> > it's running
> > CGI2 instead of CGI1, and the use lib statement
> > doesn't go
> > to the proper location.
> > 
> > Here's my theory:
> > 
> > -On a previous request, CGI2 was run, and used
> > FindBin.
> >   FindBin recorded all it's info for CGI2
> > (RealBin, Bin, Script,
> >   and RealScript).
> > 
> > -Later, a request for CGI1 came, which also tried
> > to use
> >  FindBin.
> > 
> > -Apache::Registry doesn't load the FindBin module
> > again.
> >   Instead, uses the cached version from the
> > previous request.
> >   FindBin doesn't  refresh the RealBin variable,
> > and the
> >   use lib statement now points to the CGI2
> > directory.
> > 
> > -Of course, MyLib isn't found in @INC, because
> > it's pointing
> >   to the wrong directory!
> > 
> > 
> > Any thoughts on how to overcome this problem? I
> > want to
> > keep a soft link on CGI1.
> > 
> > Thanks,
> > Joao Fonseca
> > 
> > 
> > 
> > Geocrawler.com - The Knowledge Archive
> 
> -- 
> 

Reply via email to