Я просто написал тестовый код на Python test.py
и запускаю его следующим образом:
perl test.py
Через некоторое время я осознал свою ошибку. Я говорю «через некоторое время», потому что код Python действительно выполняется правильно, как в интерпретаторе Python!
Почему мой Perl интерпретирует мой Python? test.py
выглядит так:
#!/usr/bin/python
...Python code here...
Интересно, что если я сделаю обратное (то есть вызову python something.pl
), я получу много синтаксических ошибок.
#!
в начале файла. Действительно, если я уберу челку, я получу ожидаемое поведение. В любом случае, разве это не плохая идея с точки зрения безопасности?Ответы:
Из perlrun ,
Например,
$ cat a #!/bin/cat meow $ perl a #!/bin/cat meow
источник
#! /usr/bin/env foo
.indir
была программа, предназначенная для косвенного выполнения других программ. Насколько я помню, она должна была быть особенно полезной в ситуациях setuid, когда ОС изначально не обеспечивала вы сильно поможете, и / или, возможно, в ситуациях, когда ядро ОС ограничивало вас 32-символьными командными строками. "