我刚刚编写了一些测试python代码test.py,我将按如下方式启动它:
perl test.py
Run Code Online (Sandbox Code Playgroud)
过了一会儿,我意识到自己的错误.我说"过了一会儿",因为Python代码实际上是正确执行的,就好像在Python解释器中一样!
为什么我的Perl会解释我的Python?test.py看起来像这样:
#!/usr/bin/python
...Python code here...
Run Code Online (Sandbox Code Playgroud)
有趣的是,如果我做相反的事情(即调用python something.pl),我会得到大量的语法错误.
ike*_*ami 114
来自perlrun,
如果该
#!行不包含单词"perl",也不包含单词"indir",#!则执行该程序而不是Perl解释程序.这有点奇怪,但它可以帮助那些不能做的人#!,因为他们可以告诉程序他们的SHELL是/ usr/bin/perl,然后Perl会将程序分派给正确的解释器.
例如,
$ cat a
#!/bin/cat
meow
$ perl a
#!/bin/cat
meow
Run Code Online (Sandbox Code Playgroud)