run perl script com localização desconhecida do perl

5

Estou desenvolvendo um script perl que deve ser baixado por usuários de Mac com um conhecimento muito pequeno de shell, linux etc, digamos, gerentes de escritório e contadores.

Após o download, o script deve ser executado apenas clicando duas vezes na GUI.

Meu objetivo é tornar isso o mais simples possível para usuários que não conhecem a tecnologia.

Minhas dúvidas são:

  • após o download do script não terá o bit executável
  • se o executável perl não estiver no local padrão, devo escrever algo em vez de #!/usr/bin/perl . O que devo escrever lá? Existe outra maneira, exceto abrir um console e digitar perl ./script.pl ?
por Putnik 05.02.2014 / 20:50

2 respostas

7

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.

    
por 05.02.2014 / 21:35
6

Para a linha shebang, use:

#!/usr/bin/env perl

env pesquisará o PATH ao executar o primeiro perl que encontrar. Se você quiser especificar alguma opção para o perl, basta adicioná-las ao final da linha acima.

Se mais de um perl estiver instalado, env executará o primeiro que encontrar no PATH.

    
por 05.02.2014 / 21:19