感谢您的光临! Learnfk在线教程网正在翻译编辑中,请您稍等(v^_^)v Learnfk在线教程网
英文链接源链接 [24015]
contenteditable="true"

Perl - Special Variables 介绍

Perl中有一些变量具有预定义的特殊含义。它们是在常用变量指示符($、@或%)后使用标点符号的变量,如$_(如下所述)。

大多数特殊变量都有类似于长名称的英语,如操作系统错误变量$!可以写为$OS_ERROR。但如果您打算像使用名称那样使用英语,则必须在程序文件的顶部放置一行use English;。这将引导解释器拾取变量的确切含义。

最常用的特殊变量是$_,它包含默认输入和模式搜索字符串。如,在以下行中−

#!/usr/bin/perl

foreach ('hickory','dickory','doc') {
   print $_;
   print "\n";
}

执行时,这将产生以下输出−

hickory
dickory
doc

再次,让我们检查相同的Example,而不使用$_Variable显式−

#!/usr/bin/perl

foreach ('hickory','dickory','doc') {
   print;
   print "\n";
}

执行时,这还将生成以下输出−

hickory
dickory
doc


特殊变量类型

根据特殊变量的用法和性质,我们可以将它们归类为以下类别−

  • 全局标量特殊变量.
  • 全局数组特殊变量.
  • 全局散列特殊变量.
  • 全局特殊文件句柄.
  • 全局特殊常量.
  • 正则表达式特殊变量.
  • FileHandle特殊变量.

全局标量特殊变量

下面是所有标量特殊变量的列表。我们列出了相应的英文名字以及象征性的名字。

$_The default input and pattern-searching space.
$ARG
$.The current input line number of the last filehandle that was read. An explicit close on the filehandle resets the line number.
$NR
$/The input record separator; newline by default. If set to the null string, it treats blank lines as delimiters.
$RS
$,The output field separator for the print operator.
$OFS
$\The output record separator for the print operator.
$ORS
$"Like "$," except that it applies to list values interpolated into a double-quoted string (or similar interpreted string). Default is a space.
$LIST_SEPARATOR
$;The subscript separator for multidimensional array emulation. Default is "\034".
$SUBSCRIPT_SEPARATOR
$^LWhat a format outputs to perform a formfeed. Default is "\f".
$FORMAT_FORMFEED
$:The current set of characters after which a string may be broken to fill continuation fields (starting with ^) in a format. Default is "\n"".
$FORMAT_LINE_BREAK_CHARACTERS
$^AThe current value of the write accumulator for format lines.
$ACCUMULATOR
$#Contains the output format for printed numbers (deprecated).
$OFMT
$?The status returned by the last pipe close, backtick (``) command, or system operator.
$CHILD_ERROR
$!If used in a numeric context, yields the current value of the errno variable, identifying the last system call error. If used in a string context, yields the corresponding system error string.
$OS_ERROR or $ERRNO
$@The Perl syntax error message from the last eval command.
$EVAL_ERROR
$$The pid of the Perl process running this script.
$PROCESS_ID or $PID
$<The real user ID (uid) of this process.
$REAL_USER_ID or $UID
$>The effective user ID of this process.
$EFFECTIVE_USER_ID or $EUID
$(The real group ID (gid) of this process.
$REAL_GROUP_ID or $GID
$)The effective gid of this process.
$EFFECTIVE_GROUP_ID or $EGID
$0Contains the name of the file containing the Perl script being executed.
$PROGRAM_NAME
$[The index of the first element in an array and of the first character in a substring. Default is 0.
$]Returns the version plus patchlevel divided by 1000.
$PERL_VERSION
$^DThe current value of the debugging flags.
$DEBUGGING
$^EExtended error message on some platforms.
$EXTENDED_OS_ERROR
$^FThe maximum system file descriptor, ordinarily 2.
$SYSTEM_FD_MAX
$^HContains internal compiler hints enabled by certain pragmatic modules.
$^IThe current value of the inplace-edit extension. Use undef to disable inplace editing.
$INPLACE_EDIT
$^MThe contents of $M can be used as an emergency memory pool in case Perl dies with an out-of-memory error. Use of $M requires a special compilation of Perl. See the INSTALL document for more information.
$^OContains the name of the operating system that the current Perl binary was compiled for.
$OSNAME
$^PThe internal flag that the debugger clears so that it doesn't debug itself.
$PERLDB
$^TThe time at which the script began running, in seconds since the epoch.
$BASETIME
$^WThe current value of the warning switch, either true or false.
$WARNING
$^XThe name that the Perl binary itself was executed as.
$EXECUTABLE_NAME
$ARGVContains the name of the current file when reading from <ARGV>.

全局数组特殊变量

@ARGVThe array containing the command-line arguments intended for the script.
@INCThe array containing the list of places to look for Perl scripts to be evaluated by the do, require, or use constructs.
@FThe array into which the input lines are split when the -a command-line switch is given.

全局散列特殊变量

%INCThe hash containing entries for the filename of each file that has been included via do or require.
%ENVThe hash containing your current environment.
%SIGThe hash used to set signal handlers for various signals.

全局特殊文件句柄

ARGVThe special filehandle that iterates over command line filenames in @ARGV. Usually written as the null filehandle in <>.
STDERRThe special filehandle for standard error in any package.
STDINThe special filehandle for standard input in any package.
STDOUTThe special filehandle for standard output in any package.
DATAThe special filehandle that refers to anything following the __END__ token in the file containing the script. Or, the special filehandle for anything following the __DATA__ token in a required file, as long as you're reading data in the same package __DATA__ was found in.
_ (underscore)The special filehandle used to cache the information from the last stat, lstat, or file test operator.

全局特殊常量

__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.

正则表达式特殊变量

$digitContains 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

FileHandle特殊变量

$|If set to nonzero, forces an fflush(3) after every write or print on the currently selected output channel.
$OUTPUT_AUTOFLUSH
$%The current page number of the currently selected output channel.
$FORMAT_PAGE_NUMBER
$= The current page length (printable lines) of the currently selected output channel. Default is 60.
$FORMAT_LINES_PER_PAGE
$-The number of lines left on the page of the currently selected output channel.
$FORMAT_LINES_LEFT
$~The name of the current report format for the currently selected output channel. Default is the name of the filehandle.
$FORMAT_NAME
$^The name of the current top-of-page format for the currently selected output channel. Default is the name of the filehandle with _TOP appended.
$FORMAT_TOP_NAME
点我分享笔记