9 # CGI initializer: opens SCRIPT_FILENAME
11 $PLP::print = 'print';
13 if (defined $ENV{PATH_TRANSLATED}) {
14 # SCRIPT_* points to handler script (Apache CGI)
15 # Run backwards through PATH_TRANSLATED to find target filename,
16 # then get file (relative) by stripping PATH_INFO.
17 my ($path, $rel) = (delete $ENV{PATH_TRANSLATED}, delete $ENV{PATH_INFO});
19 while (not -f $path) {
20 if (not $path =~ s/(\/+[^\/]*)$//) {
21 printf STDERR "PLP: Not found: $path$path_info ($ENV{REQUEST_URI})\n";
22 PLP::error(undef, 404);
25 # move last path element onto PATH_INFO
26 $path_info = $1 . $path_info;
28 if (defined $path_info) {
29 $rel =~ s/\Q$path_info\E$//;
30 $ENV{PATH_INFO} = $path_info;
32 $ENV{SCRIPT_FILENAME} = $path;
33 $ENV{SCRIPT_NAME} = $rel;
36 $ENV{"PLP_$_"} = $ENV{"SCRIPT_$_"} for qw/NAME FILENAME/;
38 if (not -r $ENV{PLP_FILENAME}) {
39 print STDERR "PLP: Can't read: $ENV{PLP_FILENAME} ($ENV{REQUEST_URI})\n";
40 PLP::error(undef, 403);
45 qw(SCRIPT_NAME SCRIPT_FILENAME),
46 grep /^REDIRECT_/, keys %ENV
49 my ($file, $dir) = File::Basename::fileparse($ENV{PLP_FILENAME});
52 $PLP::code = PLP::source($file, 0, undef, $ENV{PLP_FILENAME});
55 # This is run by the CGI script. (#!perl \n use PLP::CGI; PLP::CGI::everything;)