Hi I'm new at mod_perl, and I decided to start running my scripts with
Apache::PerlRun so I don't have to rewrite them right away (they're too
'dirty' to run under Apache::Registry). Anyway, I figured it was going
to be easy since PerlRun provides an environment similar to CGI, but
something strange is happening. There's a section in the User Guide that
talks about possible problems one can encounter with referenced
variables, so I figured I'd write a very simple test script to see if
that was the case with my code.
So the weird thing is that it runs fine the first time, but when I
reload the page, it doesn't show the variable I imported from
My::Config, and this is what the output looks like this:
html_dir =
count = 1
And this message shows up in the error.log:
[Sat Aug 31 19:59:15 2002] test.pl: Use of uninitialized value at
/home/val/www/cgi-bin/test.pl line 12.
This is such a simple script, but I can't figure out what I'm doing
wrong. What's even more weird is that if I change my httpd.conf to use
Apache::Registry instead of Apache::PerlRun, the script works fine!
(well the value of $count keeps incrementing, but I expected that).
Could someone please tell me what I'm doing wrong? My settings/code are
shown below:
----- httpd.conf -----
PerlWarn On
PerlTaintCheck On
PerlModule CGI
Alias /cgi-perl/ /home/val/www/cgi-bin/
<Location /cgi-perl>
SetHandler perl-script
PerlHandler Apache::PerlRun
Options +ExecCGI
allow from all
</Location>
----- test.pl -----
#!/usr/bin/perl -w
use strict;
use CGI;
use My::Config;
use vars qw($count);
my $q = new CGI;
$count++;
print $q->header(-type=>'text/html');
print "html_dir = $CF{'html_dir'}<br>";
print "count = $count<br>";
----- My/Config.pm -----
package My::Config;
use strict;
use Exporter;
use vars qw(@ISA @EXPORT %CF);
@ISA = ('Exporter');
@EXPORT = qw(%CF);
$CF{'html_dir'} = '/home/val/www/htdocs';
1;