Acabei de escrever um código de teste em Python test.py
e o estou iniciando da seguinte maneira:
perl test.py
Depois de um tempo, percebi meu erro. Eu digo "depois de um tempo", porque o código Python é realmente executado corretamente, como se fosse um interpretador Python!
Por que meu Perl está interpretando meu Python? test.py
se parece com isso:
#!/usr/bin/python
...Python code here...
Curiosamente, se eu fizer o oposto (isto é, chamar python something.pl
), obtenho uma grande quantidade de erros de sintaxe.
#!
no início do arquivo. Na verdade, se eu remover o estrondo, estou obtendo o comportamento esperado. Não é uma má ideia do ponto de vista da segurança, afinal?Respostas:
De perlrun ,
Por exemplo,
$ cat a #!/bin/cat meow $ perl a #!/bin/cat meow
fonte
#! /usr/bin/env foo
.indir
era um programa projetado para executar outros programas indiretamente. Minha lembrança é que era para ser particularmente útil em situações setuid onde o sistema operacional não fornecia nativamente você ajuda muito, e / ou talvez em situações em que o kernel do sistema operacional o limita a linhas de comando de 32 caracteres. "