本文转载至www.cnblogs.com/ace9/archive/2011/04/29/2032755.html
一、正则表达式特殊变量:
1、$n:包含上次模式匹配的第n个子串
2、$&:前一次成功模式匹配的字符串
3、$`:前次匹配成功的子串之前的内容
4、$’:前次匹配成功的子串之后的内容
5、$+:前一次使用括号的模式匹配的字符串.
二、文件句柄特殊变量:
1、$|:如果设置为零,在每次调用函数write或print后,自动调用函数fflush,将所写内容写回文件
2、$%:当前输出页号
3、$=:当前每页长度
4、$-:当前页剩余的行数
5、$~:当前报表输出格式的名称.默认值是文件句柄名.
6、$^:当前报表输出表头格式的名称.默认值是带后缀”_TOP”的文件句柄名.
三、全局特殊变量:
1、$_和$ARG:默认输入和模式匹配内容.如果不指定接收输入的变量或执行模式匹配的字符串
2、$.和$NR:前一次读的文件句柄的当前行号
3、$/和$RS:输入记录分隔符,默认是新行字符.如用undef这个变量,将读到文件结尾
4、$,的$OFS:输出域分隔符.
5、$\和$ORS:输出记录分隔符
6、$::断行字符,默认是”\n-”三个字符
7、$!:这个变量的数字值是errno的值,字符串值是对应的系统错误字符串
8、$@:命令eval的错误消息.如果为空,则表示上一次eval命令执行成功
9、$$:运行当前Perl脚本程序的进程号
10、$<:当前进程的实际用户号
11、$>:当前进程的有效用户号
12、$(:当前进程的实际组用户号
13、$):当前进程的有效组用户号
14、$[:数组的数组第一个元素的下标,默认是0
15、$]:Perl的版本号
16、$ARGV:当使用”< >”读文件时,保存当前文件名
四、全局特殊数组变量:
1、@ARGV:保存命令行参数
2、@INC:保存查找Perl程序的目录
3、@_:在子程序内,这个数组变量包含传递给子程序的参数
4、%INC:散列表%INC包含所有用do或require语句包含的文件.关键字是文件名,值是这个文件的路径
5、%ENV:包含当前环境变量
五、全局特殊文件句柄
1、ARGV:遍历数组变量@ARGV中的所有文件名的特殊文件句柄
2、STDERR:标准错误输出句柄
3、STDIN:标准输入句柄
4、STDOUT:标准输出句柄
PERL内置变量
$-当前页可打印的行数,属于Perl格式系统的一部分
$!根据上下文内容返回错误号或者错误串
$” 列表分隔符
$# 打印数字时默认的数字输出格式
$$ Perl解释器的进程ID
$% 当前输出通道的当前页号
$& 与上个格式匹配的字符串
$( 当前进程的组ID
$) 当前进程的有效组ID
$* 设置1表示处理多行格式.现在多以/s和/m修饰符取代之.
$, 当前输出字段分隔符
$. 上次阅读的文件的当前输入行号
$/ 当前输入记录分隔符,默认情况是新行
$: 字符设置,此后的字符串将被分开,以填充连续的字段.
$; 在仿真多维数组时使用的分隔符.
$? 返回上一个外部命令的状态
$@ Perl解释器从eval语句返回的错误消息
$[ 数组中第一个元素的索引号
$ 当前输出记录的分隔符
$] Perl解释器的子版本号
$^ 当前通道最上面的页面输出格式名字
$^A 打印前用于保存格式化数据的变量
$^D 调试标志的值
$^E 在非UNIX环境中的操作系统扩展错误信息
$^F 最大的文件捆述符数值
$^H 由编译器激活的语法检查状态
$^I 内置控制编辑器的值
$^L 发送到输出通道的走纸换页符
$^M 备用内存池的大小
$^O 操作系统名
$^P 指定当前调试值的内部变量
$^R 正则表达式块的上次求值结果
$^S 当前解释器状态
$^T 从新世纪开始算起,脚步本以秒计算的开始运行的时间
$^W 警告开关的当前值
$^X Perl二进制可执行代码的名字
$_ 默认的输入/输出和格式匹配空间
$| 控制对当前选择的输出文件句柄的缓冲
$~ 当前报告格式的名字
$` 在上个格式匹配信息前的字符串
$’ 在上个格式匹配信息后的字符串
$+ 与上个正则表达式搜索格式匹配的最后一个括号
$< 当前执行解释器的用户的真实ID
$ 含有与上个匹配正则表达式对应括号结果
$= 当前页面可打印行的数目
$> 当前进程的有效用户ID
$0 包含正在执行的脚本的文件名
$ARGV 从默认的文件句柄中读取时的当前文件名
%ENV 环境变量列表
%INC 通过do或require包含的文件列表
%SIG 信号列表及其处理方式
@_ 传给子程序的参数列表
@ARGV 传给脚本的命令行参数列表
@INC 在导入模块时需要搜索的目录列表
$-[0]和$+[0] 代表当前匹配的正则表达式在被匹配的字符串中的起始和终止的位置 。