Ou você pode ter sh
para cuidar disso:
#!/bin/sh
exec perl -x "$0" "$@"
#!/usr/bin/perl
...
Sim, isso é sh
e Perl em um único arquivo.
De man perlrun
:
-x
tells Perl that the program is embedded in a larger chunk of unrelated text, such as in a mail message. Leading garbage will be discarded until the first line that starts with "#!" and contains the string "perl". Any meaningful switches on that line will be applied.
Essa abordagem apenas assume o caminho de sh
(que deve ser o mesmo em qualquer SO compatível com POSIX) e que uma instância não interativa de sh
tem perl
em algum lugar em seu PATH
.
Como para garantir que o script tenha o bit executável definido, você sempre pode distribuí-lo como um tarball e fazer com que seus usuários "cliquem com o botão direito, extraiam aqui" da GUI. Se o tarball continha o script com o bit executável definido, o script extraído deveria ter o bit executável definido.