> 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
>
> --
>