http://www.perlmonks.org?node_id=223152


in reply to shebang line - foreign to me

I never use #!/usr/bin/perl as the perl for experimenting with new modules or executable scripts. This version of perl is used by various system scripts and is the responsibility of the system administrator. Changing modules used by #!/usr/bin/perl is very rude to an overloaded system administrator. Imagine trying to support perl sysadmin scripts on 2000 unix workstations, each with a different combinations and versions of modules that have been installed by end users! Also, some workstation vendors require that you not change this perl if you are buying certain types of support.

Perl is a great sysadmin tool, so I don't want to make it more difficult to use in this role. Let the sysadmin change hundreds of machines at a time, and then if it breaks it will probably be obvious what went wrong :-).

I always have at least one version of perl in my home directory, and my perl bin directory is ahead in the path of /usr/bin, so I always get my perl. Clever application writers use ExtUtils::MakeMaker as described above. This feature is clearly documented in the pod, and has been since at least 5.005_03.

There is also the problem of the end-of-line break on the #!/usr/bin/perl line. If you really have #!/usr/bin/perl\r\n, the bash shell on linux will report  bad interpreter: No such file or directory. Since this problem for the unix user is in the whitespace, it is very hard to find. In that case, it is much better to have nothing at all on the shebang.

So my preferences are to let ExtUtils::MakeMaker do its job, or don't use windows linebreaks, or have no shebang.

It should work perfectly the first time! - toma