$: ??????????字符设置,此后的字符串将被分开,以填充连续的字段.?
$; ??????????在仿真多维数组时使用的分隔符.?
$? ??????????返回上一个外部命令的状态?
$@ ?????????Perl解释器从eval语句返回的错误消息?
$[ ??????????数组中第一个元素的索引号?
$ ??????????当前输出记录的分隔符?
$] ??????????Perl解释器的子版本号?
$^ ??????????当前通道最上面的页面输出格式名字?
$^A ?????????打印前用于保存格式化数据的变量?
$^D ?????????调试标志的值?
$^E ?????????在非UNIX环境中的操作系统扩展错误信息?
$^F ?????????最大的文件捆述符数值?
$^H ?????????由编译器激活的语法检查状态?
$^I ?????????内置控制编辑器的值?
$^L ?????????发送到输出通道的走纸换页符?
$^M ?????????备用内存池的大小?
$^O ?????????操作系统名?
$^P ?????????指定当前调试值的内部变量?
$^R ?????????正则表达式块的上次求值结果?
$^S??????????当前解释器状态?
$^T??????????从新世纪开始算起,脚步本以秒计算的开始运行的时间?
$^W?? ? ? ??警告开关的当前值?
$^X ?? ? ? ? Perl二进制可执行代码的名字?
$| ??????????控制对当前选择的输出文件句柄的缓冲?
若将该变量设为非零值,就会立刻强制进行刷新;
并且当前选中的输出通道在每次打印或写之后都会进行刷新。
默认值为?0 ;
(不管选中的通道实际上是否被系统所缓冲,?$|?只是告诉你Perl是否在每次写完之后显式刷新)。
典型情况下,若?STDOUT的输出是终端,则是行缓冲模式,否则就是块缓冲。
设置该变量,在向管道或套接字输出时很有用。
比如你正在?rsh?下运行一个?Perl程序并且想在输出时马上就能看到输出内容。
该变量不影响输入缓冲。
$~ ??????????当前报告格式的名字?
$&?????????与上个格式匹配的字符串?:?正则表达式匹配变量,代表匹配的内容
$` ?????????在上个格式匹配信息前的字符串?:?正则表达式匹配变量,代表匹配位置之前的内容
$’??????????在上个格式匹配信息后的字符串?:正则表达式匹配变量,代表匹配位置之后的内容
来看一个例子,解析xml文件,有如下xml文件,想获得Code节点的值
- <?xml?version='1.0'?encoding'UTF-8'?>
- Code>200>
- 用下面的perl代码来解析
- my$str"<Code>200</Code>"?;
- if$str~>d+{
- ????print"string before matched: $`";
- ????print"matched string: $&""string after matched: $'"}
- 运行结果是
- string before matched:?>
- matched string:?200
- string after matched>
- 其中$`对应>,$&对应200,$
$+ ??????????与上个正则表达式搜索格式匹配的最后一个括号?
在无法知道可选模式集中?到底哪一个匹配成功时,该变量是非常有用的。例如:
- /Version*|Revision&&?$rev?)
$< ??????????当前执行解释器的用户的真实ID?
$<digits> ????含有与上个匹配正则表达式对应括号结果?
$> ??????????当前进程的有效用户ID?,包含正在执行的脚本的文件名?
$ ARGV ????????从默认的文件句柄中读取时的当前文件名?
%ENV??????????环境变量列表?
%INC???????????通过do或require包含的文件列表?
%SIG???????????信号列表及其处理方式?
@_????????????传给子程序的参数列表?
@ARGV?????????传给脚本的命令行参数列表?
@INC???????????在导入模块时需要搜索的目录列表
本文的参考文章:
1.?http://sm4llb0y.blog.163.com/blog/static/18912397200781104046530/
2.?http://www.voidcn.com/article/p-vdxuvrof-gv.html
3.?http://www.cnblogs.com/softwaretesting/archive/2011/08/08/2130663.html