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

I am a bit puzzled by this problem, I just got done building perl 5.8.3 on Redhat and it works flawlessly.
when I go to excute a script in the shell it won't run unless I explicitly use perl on the command line as well.
I have verified the path to my perl executable, and made sure that the *.pl file has the executable bits set. I have tried:

#!perl
#!/usr/bin/perl
#!/usr/local/bin/perl

(yes perl is located here)

but none of the *.pl will run unless I say "perl *.pl"

what am I missing?

Replies are listed 'Best First'.
Re: Perl Shebang Issues?
by Thelonius (Priest) on Apr 21, 2004 at 01:51 UTC
    So what happens if you type "./test.pl" instead of "perl test.pl"? Do you get an error message?

      it works

      why?

      and what can I do to fix my shebang?

        It's just your PATH variable. The shell will not search in the current directory for executables unless "." is in the PATH. If you do add . to your PATH, make sure it's at the end. I.e. PATH="$PATH:.", otherwise there are security issues. (It's better not to even do that, especially if you're running as root.)
Re: Perl Shebang Issues?
by Plankton (Vicar) on Apr 21, 2004 at 03:08 UTC
    Hmmm... that seems really wierd ... could you do something like this and post the results?
    Plankton@linux:~/perl/perlmonks> which perl /usr/bin/perl Plankton@linux:~/perl/perlmonks> ls -l badshebang.pl -rwxr-xr-x 1 Plankton users 40 2004-04-20 19:34 badshebang +.pl Plankton@linux:~/perl/perlmonks> ./badshebang.pl bash: ./badshebang.pl: /usr/local/bin/perl: bad interpreter: No such f +ile or dir ectory Plankton@linux:~/perl/perlmonks> cat badshebang.pl #!/usr/local/bin/perl print "WooHoo\n"; Plankton@linux:~/perl/perlmonks> cat goodshebang.pl #!/usr/bin/perl print "WooHoo\n"; Plankton@linux:~/perl/perlmonks> ./goodshebang.pl WooHoo Plankton@linux:~/perl/perlmonks> ls -l `which perl` -rwxr-xr-x 2 root root 1257284 2003-03-13 14:33 /usr/bin/p +erl
    Somethings to look for ... 1) is the perl file a actual executable or a symbolic link to the real perl executable? 2) Are you somehow having that aynoning ^M problem ... you know
    #!/usr/bin/perl^M
    Also you might find node(#! question) helpful.

    Plankton: 1% Evil, 99% Hot Gas.