Perl的第一行
与其他的脚本语言类似,perl的第一行也是以shebang开头。
有关Shebang的详细解释,下面这篇博文写的很清晰,感谢作者。
释伴:Linux 上的 Shebang 符号(#!)
那在perl中,第一行的作用就是,linux操作系统启动/usr/bin/目录下的perl解释器解释Shebang所在的文件。
有时,在Shebang语句后,会带一个 -w 符号,表示开启警告,作用相当于use warnings,在发现程序错误时给出警告提示。
第一行之后,不一定需要但最好使用的use strict和use warnings
并非在每一个perl脚本中都能在Shebang之后见到这两行:
因为它们的作用是,强制编码人员使用正确规范的编码风格,否则会编译失败或给出告警。
use strict:强制编码人员在使用变量之前先声明变量,可以使用my关键字声明变量,my关键字将变量的范围限制为局部。如果没有使用my关键字声明变量,会给出相应的错误提示。
use warnings:帮助编码人员找到打字错误,在看到程序出错时发出警告。
注意:use strict会在程序发现错误时中止程序的执行。而use warnings只会提供警告,不会中止执行。另外,use warnings 和 use strict 的作用并不重叠,事实上它们两个应该共同使用。
Perl中的特殊变量
@AGRV
@AGRV用来存储运行脚本时传递的命令行参数。
举例,test.pl是将要执行的脚本文件,该脚本执行需要三个参数,假设分别时a,b,c。
则运行脚本的命令为,test.pl a b c。
那么a,b,c作为一个数组,即被保存在@AGRV中。此时,@AGRV=(a,b,c)。
@AGRV作为一个数组,具有perl数组的所有属性,可以通过$AGRV[n]来访问数组元素,即访问参数列表中的单个参数。也可以遍历,甚至修改该数组。
$0
$0表示当前正在运行的perl脚本名。例如上小节提到的test.pl。
$_
$_表示 :
1 在没有指定变量的情况下,默认使用$_变量中的内容参与程序运算。
举例:$_ = “hello perl”;print;
输出为 hello perl。第二个语句print,后面没有指定要打印的变量,所以默认打印的就是$_中的内容。
2 表示默认的当前变量,比如对于一个循环来说,默认的当前变量就是正在循环的变量值。
foreach ('aaa','bbb','ccc') {
pint $_;
}
aaa
bbb
ccc
上面的例子可以看出,$_表示着每一次循环时的变量。 并且这种用法经常用在正则匹配中。比如打开了一个文件保存至文件句柄$fp中
foreach (<$fp>) {
if($_=~m/.*(\d+)/) {
..............
类似上面的形式,使用$_对文件的每一行进行循环和正则匹配,是常常会在代码中见到的一种形式。
$1 $2…$9
$1 $2 …$9,这一类特殊变量,是正则表达式中使用的变量,用来捕获或提取正则匹配中匹配到的项。
my $test = "hello perl"
if ($test=~m/(\w+) (\w+)/) {
print"$1\n";
print"$2\n";
}
hello
perl
上面的例子中,先定义了test字符串的内容。然后在if条件语句中,使用了正则匹配。这里暂时不详细讲解正则表达式,只先告诉读者第一个(\w+)匹配到了hello这个内容,第二个(\w+)匹配到了perl这个内容。那依次地,$1捕获了hello,$2捕获了perl。再用print语句输出出来。
以上,是目前所想到的perl主题代码之外的常见知识点。