当我用Perl执行我的Python脚本时,为什么我没有得到任何语法错误?

我只是写了一些testingpython代码到test.py ,我正在启动它,如下所示:

 perl test.py 

过了一会儿,我意识到自己的错误。 我说“过一会儿”,因为Python代码实际上正确执行,就好像在Python解释器中一样!

为什么我的Perl解释我的Python? test.py看起来像这样:

 #!/usr/bin/python ...Python code here... 

有趣的是,如果我做相反的(即调用python something.pl ),我得到了很多的语法错误。

从perlrun ,

如果#! 行不包含单词“perl”也不包含单词“indir”以#!命名的程序 被执行而不是Perl解释器。 这有点奇怪,但它可以帮助那些不会做#!机器上的人#! ,因为他们可以告诉一个程序,他们的SHELL是/ usr / bin / perl ,然后Perl将把这个程序分发给正确的解释器。

例如,

 $ cat >a #!/bin/cat meow $ perl a #!/bin/cat meow