[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