Perl常用内置变量

perl中的一些内置变量,列出比较常用的:

$_ 函数和正则表达式的默认变量,一般不加参数时perl都会使用该变量,如chomp;或者匹配操作S/**/等;

In map( ) and grep( ) function: $_

1 @upper_case_list = map(uc($_), @list);

@_ 传递给子程序的默认列表参数,可以通过访问$_[0], $_[1], $_[2]...等来分别访问单个参数。

$! 系统错误时自动会保存信息到该变量,如打开文件出错等。此时可以查看该变量。(see also $^E)

$^E Extented OS Error information

$^I 默认值undef,这不会影响程序。但如果将其赋值为某个字符串,该字符串就会变成备份文件的拓展名。比如使用钻石操作符打开文件时,perl的操作是,先将打开的文件名改成加了拓展名的文件名,然后再新建一个原来的文件名的文件,然后在程序一行行读入文件内容并做一些改动后,会保存到新文件中去。这样就相当于修改了文件内容,并将老文件进行了备份。当然,如果值是undef,则不会备份旧文件。

$ARGV 从 < >读取时的当前文件名

@ARGV perl命令行输入参数,比如多个文件名:$ARGV[0],$ARGV[1]...

$` 匹配起始位置之前的字符串 $& 整个匹配的字符串 $' 匹配结束位置之后的字符串

举例如下:"ABCDEFG" =~ /CD/; print " $` - $& - $' "; 打印结果:AB - CD - EFG

$a, $b 在sort( ) 函数中:

1 # same thing, but with explicit sort routine
2 @articles = sort {$a cmp $b} @files;
3 # now case-insensitively
4 @articles = sort {uc($a) cmp uc($b)} @files;
5 # same thing in reversed order
6 @articles = sort {$b cmp $a} @files;

$^O 操作系统名称 OS Name when perl was built

$$ Pid

$( Group id

$] Perl版本号+小数点patch level 5.006001

$. 最后一次读取的文件句柄的当前行

$" separator for print "@array"; 打印列表时的分隔符

$@ 错误信息 Error string of last eval( )

$? 子进程返回的状态码 Status code return by child process, closed pipe, `` etc

匹配捕获:$1, $2, …, $+ (last bracket matches)

$0 程序名 Program name

%ENV 环境变量: foreach $key (keys(%ENV)) {print "$key\t$ENV{$key}\n";}

%SIG 信号句柄:

1 $SIG{"HUP"} = "IGNORE";
2 $SIG{"INT"} = "DEFAULT";
3 $SIG{"QUIT"}= \&My_handler;
4 $SIG{__WARNING__} = sub {
5 die $_[0];
6 }

STDERR 用于标准出错内容的特殊文件句柄

STDIN 用于标准输入的特殊文件句柄

STDOUT 用于标准输出内容的特殊文件句柄

关于标准输出STDOUT和标准错误STDERR的区别,可参考这里:http://liucheng.name/872/

参考perldoc perlvar 查询更多其他变量。。。

updated: 2011-12-27 10:36:14

$| 如果非0,则对当前选定的文件执行写或者打印操作后强制清除缓冲区。

这个参数可用于产生很酷的进度条。

DATA 直接从执行它的脚本中获取数据,见这里

$/ 默认是换行符,因此一般情况下我们使用<>读取文件时都是一行一行读取的,使用local或者undef将使得读取文件直到文件结尾。

updated: 2013-06-30 18:46