perl中的特殊内置变量(转)
时间:2007-02-06 来源:zhangjunxia
#!/usr/bin/perl
use warnings;
@array = qw(a b c d);
foreach (@array) {
print $_,"\n";
}
例子的作用就是定义一个数组并把其中的元素打印出来,这里需要注意的是foreach循环部分,foreach循环的标准格式应该是:
foreach $element (@array){
......
}
其中数组@array将其中的元素依次赋值给$element,但是在上面那个程序中,我并没有这样做,在程序中,我就使用到了perl中内置的一个特殊变量 $_ 。
在程序第五行中:foreach (@array) 实际上就是等于 foreach $_ (@array),在这里,$_是默认是输入/输出,因此,如果在程序中有类似的没有明确声明的变量位置的时候,就有可能能使用$_代替。
再看另外一个内置变量
perl -e "sleep(5);print qq(The PID of process perl.exe is : $$)";
这是一句命令行上使用的perl程序,作用就是打印出一段话:print qq(The PID of process perl.exe is : $$) ,在这里,存在着特殊变量$$ ;
$$是当前perl解析器的进程ID(即,PID),大家可以将在段程序写在命令行上,该程序会在perl解析器运行5秒后打印出perl解析器的进程ID,大家可以在程序运行期间通过查看进程列表来确定打印结果是否正确(^_^不会错的)。
接下来是一个用来返回错误信息(或是错误号)的特殊变量。
为了省事,不写程序了,还是来个命令行的吧
perl -e "opendir FH,'c:\none' or die qq(can't open:$!);";
这句话就是要打开C盘下的一个none目录(而实际上我的C盘中并没有此目录,之所以这样写的目的就是为了引起一个程序中的错误信息),如果没有打开的话,会执行后面的die qq(can't open:$!)
在这里,$!就指明了错误信息的内容,命令行会返回错误信息:
can't open:No such file or directory at -e line 1.
$!在open或是opendir中用的比较多(无论是打开文件还是管道或是其他)。
来个例子,说一个有意思的特殊内置变量
$text = "C:\test.txt";
{
open FH,$text or die "can't open:$!";
my $line = ;
close FH;
print $line;
}
print "#===========================#\n";
{
undef $/;
open FH,$text or die "can't open:$!";
my $line = ;
close FH;
print $line;
}
=================================
C盘下的test.txt的内容是:
111111111111111111111111111
222222222222222222222222222
333333333333333333333333333
=================================
好,程序的运行结果是:
111111111111111111111111111
#===========================#
111111111111111111111111111
222222222222222222222222222
333333333333333333333333333