有些变量,Perl中的一个预定义的和特殊的意义。他们是变量使用后,通常变量标点符号指示如($, @或%),如$_(解释如下)。
大部分特殊变量有像英语这样长的名字,操作系统错误变量$!可以编写为$OS_ERROR,但是,如果你要使用类似英文名称。那么你就必须把一条线“用英文”在程序文件的顶部。这个指导拾取的确切含义的变量:
#!/usr/bin/perl foreach ('hickory','dickory','doc') { print; print "\n"; } This will produce following result - by www.gitbook.net hickory dickory doc
第一次执行循环,"hickory"被打印。第二次继续"dickory"被打印,第三次"doc"被打印。这是因为在循环的每次迭代中,当前字符串放置在$_,默认情况下,通过打印使用。这里有地方,Perl将假定$_即便你不指定它:
基于特殊变量的使用情况和性质,我们可以分为以下几类:
这里是所有标特殊变量列表。我们列出了类似名称相应的英文符号名。
$_ |
默认的输入和模式搜索空间。 |
$ARG |
$. |
当前输入的最后一个句柄读取的行数。一个明确关闭的文件句柄重置行号。 |
$NR |
$/ |
输入记录分隔符,默认情况下是换行符。如果设置为空字符串,它会将空白行作为分隔。 |
$RS |
$, |
打印操作输出字段分隔符。 |
$OFS |
$\ |
打印操作输出记录分隔符。 |
$ORS |
$" |
就像“$”,除非它适用于成一个双引号字符串(或类似的解释字符串)插值的列表值,默认是一个空格。 |
$LIST_SEPARATOR |
$; |
多维数组模拟下标分隔符,默认是“\034”。 |
$SUBSCRIPT_SEPARATOR |
$^L |
什么样的格式输出到执行换页,默认是“\ F”。 |
$FORMAT_FORMFEED |
$: |
当前字符串可能被分解后,填补格式的延续字段(以^开始)的字符集。默认是“\n”。 |
$FORMAT_LINE_BREAK_CHARACTERS |
$^A |
写入格式行累加器的当前值。 |
$ACCUMULATOR |
$# |
包含打印的数字(已弃用)的输出格式。 |
$OFMT |
$? |
由最后的管道关闭,反引号(``)命令,或系统操作返回的状态。 |
$CHILD_ERROR |
$! |
如果在数值上下文中使用,产生的errno变量的当前值,确定最后的系统调用错误。如果在字符串上下文中使用,产生相应的系统错误字符串。 |
$OS_ERROR or $ERRNO |
$@ |
从最后eval命令的Perl语法错误消息。 |
$EVAL_ERROR |
$$ |
Perl处理管道执行这个脚本。 |
$PROCESS_ID or $PID |
$< |
这一进程的真实用户ID(UID)。 |
$REAL_USER_ID or $UID |
$> |
这一进程的有效用户ID。 |
$EFFECTIVE_USER_ID or $EUID |
$( |
这一进程的实际组ID(GID)。 |
$REAL_GROUP_ID or $GID |
$) |
这一进程的有效GID。 |
$EFFECTIVE_GROUP_ID or $EGID |
$0 |
包含含有Perl脚本被执行的文件名称。 |
$PROGRAM_NAME |
$[ |
在数组的第一个元素和子串的第一个字符的索引,默认为0。 |
|
$] |
返回除以1000的版本加补丁程序级别。 |
$PERL_VERSION |
$^D |
The current value of the debugging flags. |
$DEBUGGING |
$^E |
在一些平台上扩展错误消息。 |
$EXTENDED_OS_ERROR |
$^F |
系统的最大文件描述符,通常是2。 |
$SYSTEM_FD_MAX |
$^H |
包含编译器内部的某些模块启用的提示。 |
|
$^I |
就地编辑扩展的当前值。使用undef禁用就地编辑。 |
$INPLACE_EDIT |
$^M |
$M的内容可以用来在紧急情况下,Perl 消亡与内存错误的内存池。$M使用需要特殊的Perl编译。有关详细信息,请参阅INSTALL文件。 |
|
$^O |
包含操作系统的名称,目前的Perl二进制编译。 |
$OSNAME |
$^P |
因此,调试器清除内部标志,它不调试自身。 |
$PERLDB |
$^T |
在脚本的开始时间在几秒钟内运行以来的时间。 |
$BASETIME |
$^W |
警告切换的当前值,无论是真的还是假的(true or false)。 |
$WARNING |
$^X |
作为被执行的Perl二进制自身的名称。 |
$EXECUTABLE_NAME |
$ARGV |
包含当前文件读取时的名称。 |
|
@ARGV |
命令行参数的数组,其中包含用于脚本。 |
@INC |
数组含有名额(空间)查找Perl脚本的列表计算,评估,需求,或使用建构。 |
@F |
分割时给出一个命令行开关输入线数组。 |
%INC |
哈希包含每个文件的文件名项已被列入通过或要求。 |
%ENV |
哈希包含了您当前的环境。 |
%SIG |
哈希用来设置信号处理的各种信号。 |
ARGV |
遍历@ ARGV中的命令行文件名的特殊文件句柄。一般空句柄在写入<>。 |
STDERR |
标准错误中的任何包的特殊句柄。 |
STDIN |
标准输入任何包的特殊句柄。 |
STDOUT |
任何包的标准输出的特殊句柄。 |
DATA |
特殊的文件句柄,是指任何包含脚本文件后,__END__标志。特殊文件句柄,或为任何所需的文件后的__DATA__记号,只要你读取数据,在同一个包中的__DATA__在里边被发现 |
_ (underscore) |
使用特殊的文件句柄缓存从最后的stat, lstat,,或文件测试操作的信息。 |
__END__ |
Indicates the logical end of your program. Any following text is ignored, but may be read via the DATA filehandle. |
__FILE__ |
Represents the filename at the point in your program where it's used. Not interpolated into strings. |
__LINE__ |
Represents the current line number. Not interpolated into strings. |
__PACKAGE__ |
Represents the current package name at compile time, or undefined if there is no current package. Not interpolated into strings. |
$digit |
Contains the text matched by the corresponding set of parentheses in the last pattern matched. For example, $1 matches whatever was contained in the first set of parentheses in the previous regular expression. |
$& |
The string matched by the last successful pattern match. |
$MATCH |
$` |
The string preceding whatever was matched by the last successful pattern match. |
$PREMATCH |
$' |
The string following whatever was matched by the last successful pattern match. |
$POSTMATCH |
$+ |
The last bracket matched by the last search pattern. This is useful if you don't know which of a set of alternative patterns was matched. For example: /Version: (.*)|Revision: (.*)/ && ($rev = $+); |
$LAST_PAREN_MATCH |
$| |
如果设置为非零,强制每写入或打印fflush(3)后对当前选定的输出通道。 |
$OUTPUT_AUTOFLUSH |
$% |
当前选定的输出通道的当前页码。 |
$FORMAT_PAGE_NUMBER |
$= |
当前页的长度(打印线)当前选中的输出通道。默认值是60。 |
$FORMAT_LINES_PER_PAGE |
$- |
当前选中页面的输出通道上留下的行数。 |
$FORMAT_LINES_LEFT |
$~ |
当前报表格式为当前选定的输出通道的名称。默认的文件句柄的名字。 |
$FORMAT_NAME |
$^ |
当前顶级的页面格式为当前选定的输出通道的名称。默认为名称带_TOP附加句柄。 |