'#!'这个符号源自于unix。'#!/usr/bin/perl'-其实是个具有特殊意义的注释,实际上它是告诉操作系统,这个文件中的内容,应该由存放在/usr/bin/下的perl程序执行。而在Windows下这个是不需要的,...
perl中#!/usr/bin/perl意义:
'#!'这个符号源自于unix。'#!/usr/bin/perl'-其实是个具有特殊意义的注释,实际上它是告诉操作系统,这个文件中的内容,应该由存放在/usr/bin/下的perl程序执行。而在Windows下这个是不需要的,而大家习惯于写上#!perl,只是为了表明这是一个perl程序。
perl解释器通常都被放在/usr/bin/perl 或/usr/local/bin/perl 中。
如果不是这样,则需要找到你自己机器上perl 的存放地点,然后使用那个路径。在Unix 系统中,可能使用如下一行找到perl:#! /usr/bin/env perl。
用途:
这个符号-!#,通常在Unix系统的脚本中第一行开头中写到,它指明了执行这个脚本文件的解释程序。
1. 如果脚本文件中没有#!这一行,那么它执行时会默认用当前Shell去解释这个脚本(即:$SHELL环境变量)。
2. 如果#!之后的解释程序是一个可执行文件,那么执行这个脚本时,它就会把文件名及其参数一起作为参数传给那个解释程序去执行。
3. 如果#!指定的解释程序没有可执行权限,则会报错“bad interpreter: Permission denied”。如果#!指定的解释程序不是一个可执行文件,那么指定的解释程序会被忽略,转而交给当前的SHELL去执行这个脚本。
4. 如果#!指定的解释程序不存在,那么会报错“bad interpreter: No such file or directory”。注意:#!之后的解释程序,需要写其绝对路径(如:#!/bin/bash),它是不会自动到$PATH中寻找解释器的。
5. 当然,如果你使用”bash test.sh”这样的命令来执行脚本,那么#!这一行将会被忽略掉,解释器当然是用命令行中显式指定的bash。
举例理解(windows):
例如下图,通常情况下我们用第一种方式运行perl,就是指定perl来运行代码文件;但是脚本里面如果添加了#!指定perl所在的路径,再给文件加上可执行权限之后,就可以直接运行,而不需要指定perl来运行,例如如2:
对于perl新手来说,理解起来比较难,建议使用第一种方法运行perl脚本就行,可以忽略这一行,甚至脚本中不写这一行也行;