tphyahoo has asked for the wisdom of the Perl Monks concerning the following question:

Monks, I have winxp with active state perl.

I have also apachefriends/XAMPP, with the perl add-on, for an OOTB apache with mod_perl. See:
http://www.apachefriends.org/en/winxampp/readme-addon-perl.txt

This means I have two "perl homes", the one installed by apachefriends, and the one installed by active state.

A simple script like

print "ok";
works. But, I have a script that has
use HTML::TokeParser::Simple;
and apache chokes on this line:
Internal Server Error The server encountered an internal error or misconfiguration and was u +nable to complete your request. Please contact the server administrator, admin@localhost and inform th +em of the time the error occurred, and anything you might have done t +hat may have caused the error. More information about this error may be available in the server error + log. Apache/2.0.50 (Win32) mod_perl/1.99_14 Perl/v5.8.4 PHP/5.0.1 SVN/1.1.1 + DAV/2 mod_ssl/2.0.50 OpenSSL/0.9.7c Server at localhost Port 80
I installed HTML::TokeParser::Simple for my "usual" Active State perl, but I guess this hasn't been installed for the version of perl being called by apache.

Could someone with apache experience -- or ideally, with ApacheFriends/XAMPP experience -- give me some pointers on how to get my script to run?

Also, is there some way I can get more helpful error messages? Right now I am commenting out lines of script playing hit and miss.

Much obliged!

thomas.

UPDATE: This isn't very surprising to me, but the apache log reported:

[Thu Dec 30 19:54:21 2004] [error] 3308: ModPerl::Registry: Can't loca +te HTML/TokeParser/Simple.pm in @INC (@INC contains: C:/apachefriends +/xampp/xampp/perl/site/lib/ C:/apachefriends/xampp/xampp/perl/lib C:/ +apachefriends/xampp/xampp/perl/site/lib . C:/apachefriends/xampp/xamp +p/apache/ C:/apachefriends/xampp/xampp/apache/lib/perl) at

Replies are listed 'Best First'.
•Re: how do you control the perl executable used by mod_perl? (apachefriends)
by merlyn (Sage) on Dec 30, 2004 at 19:20 UTC
    I don't know about the windows world, but in the Unix world, a specific Perl is "built" into the mod_perl extension, so you don't get to choose that once it is done.

    You might be able to solve your problem by fixing the @INC path in your mod_perl usage, however.

    -- Randal L. Schwartz, Perl hacker
    Be sure to read my standard disclaimer if this is a reply.

      Thanks Merlyn.

      I also received the following email from the programmer who wrote the original script.

      **************************

      thomas,

      The problem is that you are using mod_perl. I think even if you fix the problem with the missing module, the program won't work becouse I don't think mod_perl supports forks (but I might be wrong).

      What I do on my system (on both xp and linux) is use CGI. Default apache installations already have a cgi directory, named cgi-bin. You have to make sure that the .pl file is located on the cgi-bin directory, and that the first line of the script has the correct location of the perl executable on your system. If you have more than one perl executable, it should be the one with the needed modules. Remember that it should be version 5.8 on xp, becouse previous versions don't have good fork support. On my system the first line is this:

      #!c:/perl/bin/perl.exe -w

      If you have perl in another directory is easy to change this line to fit your perl installation.

      I hope this was helpful.

      X.

      ************************

      I'm going to try this advice right after I post, but I expect this to work, because it does on his system.

      thomas.