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

Hello all,

Okay, here's the situation. What I've got: A Windows NT box running Netscape Enterprise Server v3.6 with Perl5 installed and working. The web server will run perl 5 cgi scripts.

The problem: Taint mode. If I try a shebang line a la unix like: #!c:\perl\bin\perl -T, I get a 500 Server error.

I can't seem to find anything useful in the documentation of the web server.

How can I turn taint mode on?

Many thanks!

Replies are listed 'Best First'.
Re: Taint Mode on an Old Web Server
by grinder (Bishop) on Dec 18, 2001 at 22:42 UTC
    Do you have physical access to the machine? Or can you otherwise retrieve the error log? The 500 error means that your script is sending something other than

    content-type: text/html
    as the very first thing. It's probably sending something like "Too late for -T at line 1" or something similar. Reading the error log will explain what is going wrong. You may need to use a special extension (i.e., not .cgi) for your scripts, an extension that the server knows should be passed off to perl -T, rather than perl by itself.

    Perl behaves like this to avoid race conditions, whereby a script could be started up and changed between the time it was opened and the time the first line was read, or something like that.

    Then again, you might just have a syntax error in your script. Try use CGI::Carp qw/fatalsToBrowser/.

    --
    g r i n d e r
    just another bofh

    print@_{sort keys %_},$/if%_=split//,'= & *a?b:e\f/h^h!j+n,o@o;r$s-t%t#u';
Re: Taint Mode on an Old Web Server
by dws (Chancellor) on Dec 18, 2001 at 23:28 UTC
    It's been many years since I touched Perl CGIs on a Netscape web server on Win32, but if memory serves, the association that maps .cgi (or .pl) to Perl comes out of the Win32 Registry. This would put you in the same position as people having problems with <nobr>-T</nobr> under IIS, though the solution you need might be different. (IIS uses a "scriptmap" tree in the registry; Netscape might not.)

    That's as much help as I can offer. Good luck.

Re: Taint Mode on an Old Web Server
by count0 (Friar) on Dec 18, 2001 at 22:50 UTC
    I've never worked on an NT web server, but I can certainly tell you where to look.... in your logs! ;)

    Anytime you get a 500 error, check your web server's error logs. There will be a very detailed description of exactly what went wrong.

    By no means am I an expert with Windows, but perhaps it's a problem with the shebang line? My understanding is that the shebang isn't even used on Windows. Instead, it uses file extensions to determine how to run a program.
    If .pl scripts are set to run with 'C:\perl\bin\perl', set up a different extension (or alter .pl's) to use "C:\perl\bin\perl -T" instead.

      Perl does check the shebang line in Windows for commandline switches like -w and -T.

      Check your logs, if you are getting a "Too late for option -T" error, Perl is being invoked with the -T already, ie your scripts are associated to perl -T instead of just perl.


      TGI says moo

        Don't you mean that the -T option is not on the file association -- but it should be?

            -- Chip Salzenberg, Free-Floating Agent of Chaos

        Okay, I am indeed getting the "Too late for option -T" error.

        Now, the file extension is set as .cgi and the file association on the NT box is set for .cgi but there is no -T option among the default execution parameters.

        So now that seems to be the problem, anyone else know why it's giving me that error despite the fact that it is not being executed with -T?