当前位置:首页 » Perl » Perl特殊变量

Perl特殊变量

Perl特殊变量,实例,使用例子在线教程,Perl中的有些变量是一个预定义和有特殊的意义。

有些变量,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将假定$_即便你不指定它:

  • 一元运算符的不同函数,包括像ord和int的功能,以及所有的文件测试(-f-d)除了-t,其默认都是STDIN。
  • 各种列表函数,如print和unlink。
  • 模式匹配符m//, s///, 和 tr/// 当不使用 =~ 操作符。
  • 如果没有其它变量提供,默认的迭代变量将在每次打循环。
  • 隐式迭代变量在 grep 和 map函数。
  • 把一个输入记录行输入操作的结果时,测试一段时间的测试(即)唯一标准本身的默认位置。需要注意的是一段测试外,不会出现这种情况。

特殊的变量类型

基于特殊变量的使用情况和性质,我们可以分为以下几类:

  • 全局标量的特殊变量.
  • 全局数组的特殊变量s.
  • 全局哈希的特殊变量.
  • 全局特殊文件句柄.
  • 全局特殊常量.
  • 正则表达式的特殊变量.
  • 文件句柄的特殊变量.

全局标量的特殊变量

这里是所有标特殊变量列表。我们列出了类似名称相应的英文符号名。

$_

默认的输入和模式搜索空间。

$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附加句柄。