Why don't I get any syntax errors when I execute my Python script with Perl?
I just wrote some testing python code into test.py
, and I'm launching it as follows:
perl test.py
After a while I realized my mistake. I say "after a while", because the Python code gets actually correctly executed, as if in Python interpreter!
Why is my Perl interpreting my Python? test.py
looks like this:
#!/usr/bin/python
...Python code here...
Interestingly, if I do the opposite (i.e. call python something.pl
) I get a good deal of syntax errors.
Solution 1:
From perlrun,
If the
#!
line does not contain the word "perl" nor the word "indir" the program named after the#!
is executed instead of the Perl interpreter. This is slightly bizarre, but it helps people on machines that don't do#!
, because they can tell a program that their SHELL is /usr/bin/perl, and Perl will then dispatch the program to the correct interpreter for them.
For example,
$ cat a
#!/bin/cat
meow
$ perl a
#!/bin/cat
meow