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

This is slightly off topic, but I'm hoping that the combined Perl debugging experience of the Monks can help me.

Every once ina while, I'll be writing a Perl script using CGI.pm, and when I go to run it, I'll get a 500-error. When the script is run from the console, I recieve no errors or warnings. However, if I run the program with the -w switch on the !# line, the program runs fine via CGI, and the output on the console is unchanged.

I cannot seem to figure out any pattern. Some scripts run fine without the -w, and some have to have it to run at all. All of these scripts are developed with use warnings and use strict, and it's happened to me on more than one server under more than one *NIX OS. It's driving me nuts.

Any help would be greatly appreciated!

Replies are listed 'Best First'.
Re: Unidentified debugging problem asked by adding -w
by dws (Chancellor) on Apr 02, 2003 at 20:30 UTC
    However, if I run the program with the -w switch on the !# line, the program runs fine via CGI, ...

    99% of the time this indicates that you FTP'd the file from a Windows box to a non-Windows server using "binary" mode, which leaves stray carriage returns in the file. The first line of the file probably read   #!/usr/bin/perl^M Which gets you a 500 error since there's no executable in /usr/bin named perl^M. Adding the -w changed this to   #!/usr/bin/perl -w^M which runs, since the executable is found.

    Try FTPing in "text" mode next time.

      You were right on target. I never even considered that the FTPing was breaking it. Thanks for your help!