1. ホーム
  2. python

[解決済み] PythonスクリプトをPerlで実行してもシンタックスエラーが出ないのはなぜですか?

2023-05-19 22:35:04

質問

私はいくつかのテスト用 Python コードを test.py に書いて、次のように起動しています。

perl test.py

しばらくして、私は自分の間違いに気がつきました。私が「しばらくして」と言ったのは、Pythonのコードが実際にPythonインタプリタのように正しく実行されたからです。 PythonコードはPythonインタプリタのように、実際に正しく実行されるからです!

なぜ私のPerlは私のPythonを解釈するのでしょうか? test.py はこのように見えます。

#!/usr/bin/python

...Python code here...

興味深いことに、逆のことをすると (つまり python something.pl を呼び出す)と、かなりの数のシンタックスエラーが発生します。

どのように解決するのですか?

から パールラン ,

もし #! の行に "perl" と "indir" という単語が含まれていない場合、そのプログラム名は #! で指定されたプログラムが Perl インタープリタではなく、実行されます。これは少々奇妙なことではありますが、Perl インタープリタが実行されないマシンの人々の助けになります。 #! をしないマシンでは、プログラムに自分の SHELL が /usr/bin/perl と伝えることができ、Perl はそのプログラムを正しいインタプリタにディスパッチするからです。

例えば

$ cat a
#!/bin/cat
meow

$ perl a
#!/bin/cat
meow