The perl executable is normally installed in /usr/bin or /usr/local/bin on your machine. Some people often refer to perl as the Perl interpreter, but this isn’t strictly correct, as you’ll learn shortly.
Every Perl program must be passed through the Perl executable to be executed. The first line in many Perl programs is something like:
#!/usr/bin/perl
For Unix systems, this #!
(hash-bang or shebang) line tells the shell
to look for the /usr/bin/perl program and pass the
rest of the file to that /usr/bin/perl for
execution. Sometimes, you’ll see different pathnames to the Perl
executable, such as /usr/local/bin/perl. You might
see perl5 or perl6 instead of
perl on sites that still depend on older versions
of Perl.
Often, you’ll see command-line options tacked on the end of
perl, such as the notorious -w
switch, which produces warning messages. But almost all Perl programs on
Unix start with some variation of #!/usr/bin/perl
.
If you get a mysterious “Command not found” error on a Perl program, it’s often
because the path to the Perl executable is wrong. When you download Perl
programs off the Internet, copy them from one machine to another, or
copy them out of a book (like this one!). The first thing you should do
is make sure that the #!
line points
to the location of the Perl executable on your system. If you’re on a
Win32 platform, where the shebang path is used only to check for Perl
switches, you should make sure that you run
pl2bat.bat on the program so you can run it directly from the
command line.
So what does the Perl executable do? It compiles the program internally into a parse tree and executes it immediately. Because the program is not compiled and executed in separate steps, Perl is commonly known as an interpreted language, but this is not quite true.[1]
So do you call something a Perl “script” or a Perl “program”? Typically, the word “program” is used to describe something that needs to be compiled into assembler or bytecode before executing, as in the C language. The word “script” is used to describe something that runs through an executable on your system, such as the Bourne shell. For Perl, you can use either phrase and only offend those Perl programmers who care about semantics more than you do.
What does all this mean for you? When you write a Perl program,
you can just give it a correct #!
line at the top of the script, make it executable with chmod +x
, and run it. For 95% of Perl
programmers in this world, that’s all they care about.
[1] Unlike strictly compiled languages, the compiled form of a Perl program is not stored as a separate file. However, Versions 5.6 and later give you the option of using a standalone Perl compiler that creates bytecode to be executed separately. We’ll say more about the compiler later in this chapter.
3.141.192.183