[Cascavel-pm] Shebang line no Windows [Was: Criando processos através da função open()]
Adriano Ferreira
a.r.ferreira em gmail.com
Domingo Fevereiro 17 07:40:57 PST 2008
2008/2/17 Nilson Santos Figueiredo Junior <acid06 em gmail.com>:
> 2008/2/16 Matheus Barros <zoistutz em gmail.com>:
> > #!C:\Perl\bin\perl.exe -w
>
> Você sabe que a shebang line não serve pra nada no Windows[1], certo?
O que não é uma verdade absoluta. Para saber mais, é melhor ler
"perldoc perlrun" (que é a referência absoluta sobre como funciona o
interpretador perl com
respeito à linha de comandos):
http://perldoc.perl.org/perlrun.html (para um versão em HTML)
Por exemplo,
(em um arquivo w.pl)
#!perl -w
print "warnings ", ( $^W ? 'on' : 'off' ), "\n"
Você poderá perceber que a switch "-w" é respeita e o resultado é
C:> perl w.pl
warnings on
Um outro ponto é que para scripts instalados através de uma
distribuição no padrão do CPAN, a shebang line é reescrita contendo o
path correto que aponta para o interpretador usado na instalação.
Assim a linha
#!/usr/bin/perl
é realmente uma boa prática mesmo para scripts que rodarão apenas em
Windows com ou sem NTFS.
Adriano.
> O que é considerado como boa prática é deixá-la como
>
> #!!/usr/bin/perl
>
> mesmo para que depois possa ser executado com um ./programa.pl em
> outros ambientes.
>
> [1]: a não ser se você for rodar CGIs em um Apache sob Windows. Nesse
> caso, o Apache pra Windows interpreta a shebang line. Uma alternativa
> muito mais interessante, nesse caso, é criar uma estrutura de pastas
> partindo da raiz do volume onde o apache está instalado e que replica
> o /usr/bin e depois faz um link pro executável normal (usando o
> Win32::Hardlink, por exemplo, ou algum utilitário disponível). Dessa
> maneira você vai ter um /usr/bin/perl em Windows e o Apache vai
> funcionar perfeitamente com a shebang "padrão". Pouca gente sabe, mas
> o NTFS possui tanto symlinks como hardlinks, além de outros recursos
> não utilizados pelo OS.
>
> -Nilson Santos F. Jr.
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>
Mais detalhes sobre a lista de discussão Cascavel-pm