in reply to Simnple script not working - Perl on XP

As an anonymous monk pointed out, the following is wrong.

In a Windows environment it is sometimes(?) required to replace
 #!/usr/bin/perl
with
 #!perl
Then you can just hi.pl


Be Appropriate && Follow Your Curiosity

Replies are listed 'Best First'.
Re^2: Simnple script not working - Perl on XP
by zerocred (Beadle) on Jan 12, 2011 at 06:15 UTC
    Thanks for that I realize the line isn't really necessary, but its habit.
    Most or all my perl scripts end up being run on Linux.
    I went into the file manager > file type associations and changed the .pl to Perl, so I can just type 'hi.pl' and it runs ok.

    I think what happened was when ActivePerl got deleted before reinstalation, or my reinstall of XP, the .pl got associated with Command Interpreter cos Perl didn't exist - sounds plausible. The association was not made again when Perl was re-installed - until I manually fixed it.
Re^2: Simnple script not working - Perl on XP
by Anonymous Monk on Jan 11, 2011 at 18:45 UTC
    That's not the case. Perl on Windows parses the line for command-line-like flags because it has to (so -w and -l and -T and so forth will work), but since Perl is already running, it doesn't care about what binary the script claims should be invoked.
      it doesn't care about what binary the script claims should be invoked

      Interestingly enough, it *does* care about the name of the binary, but only to the extent that it matches /perl/i.
      If you try running a script that begins with #! xxxxx (where 'xxxxx' stands for any string of characters that does *not* match /perl/i) then all you'll get is a "Can't exec xxxxx ...." error.

      This wasn't always the case, but has been since at least perl-5.8.0

      Update: And if 'xxxxx' happens to be the name of a non-perl binary that *does* get found, then things might (or might not) get a little crazy:
      C:\_32\pscrpt>type try.pl #! gcc -w print "ok\n"; C:\_32\pscrpt>perl try.pl C:\_32\pscrpt>try.pl: file not recognized: File format not recognized collect2: ld returned 1 exit status C:\_32\pscrpt>
      Cheers,
      Rob
      I believe one of the major web servers uses that info, so while the switch wouldn't help in this situation, it could help in others.