[DCPM] windows newlines in #! line

Dave Cross dave at dave.org.uk
Sat Jul 22 13:52:36 PDT 2006


Steve Marvell wrote:
> This started as a CGI problem. Apparently, some of the Perl scripts a
> particular company provide are littered with Windows newlines. This
> casuse a bad interpretor error.
> 
> This is also the case if the script is run by hand.
> 
> I understand that the present version of a Apache the clinet is using
> handles this. 
> 
> I take this is a shell problem, but I think it could be solved if
> Apache prestripped them
> 
> Anyone got any ideas?

The problem is that your shebang line has a Windows newline character on
the end. It therefore looks something like this:

   #!/usr/bin/perl\r\n

Unix recognises the \n as the end of the line and therefore looks for a
program called

   /usr/bin/perl\r

And (usually) that doesn't exist.

Of course, you shouldn't be seeing this problem as your shebang line
should look like this:

   #/usr/bin/perl -T\r\n

In this case, the shell correctly extracts the path to Perl and passes
the slight broken command line argument (-T\r) to Perl. Perl can deal
with broken line endings just fine, so this will fix the problem.

Of course, you'll then find that your program isn't taint-clean and
that'll give you some far more serious problems to fix :)

Dave...




More information about the Devoncornwall-pm mailing list