Почему я не могу получить синтаксические ошибки при выполнении моего Python script с Perl?

Я просто написал некоторый тестовый код python в test.py, и я запускаю его следующим образом:

perl test.py

Через некоторое время я осознал свою ошибку. Я говорю "через некоторое время", потому что Код Python фактически выполняется правильно, как в интерпретаторе Python!

Почему мой Perl интерпретирует мой Python? test.py выглядит следующим образом:

#!/usr/bin/python

...Python code here...

Интересно, что если я делаю противоположное (т.е. вызов python something.pl), я получаю много синтаксических ошибок.

Ответ 1

От perlrun,

Если строка #! не содержит слова "perl" или слово "indir", программа, названная в честь #!, выполняется вместо интерпретатора Perl. Это немного странно, но помогает людям на машинах, которые не делают #!, потому что они могут сообщить программе, что их SHELL -/usr/bin/perl, а Perl отправит программу на правильный интерпретатор для них.

Например,

$ cat >a
#!/bin/cat
meow

$ perl a
#!/bin/cat
meow