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;

Reply via email to