Global Special Variables

The most common special variable is $_, which contains the default input and pattern-searching string. For example:

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

The first time the loop is executed, “hickory” is printed. The second time around, “dickory” is printed, and the third time, “doc” is printed. That’s because in each iteration of the loop, the current string is placed in $_ and is used by default by print. Here are the places where Perl will assume $_, even if you don’t specify it:

  • Various unary functions, including functions such as ord and int, as well as the all file tests (-f, -d), except for -t, which defaults to STDIN.

  • Various list functions such as print and unlink.

  • The pattern-matching operations m//, s///, and tr/// when used without an =~ operator.

  • The default iterator variable in a foreach loop if no other variable is supplied.

  • The implicit iterator variable in the grep and map functions.

  • The default place to put an input record when a line-input operation’s result is tested by itself as the sole criterion of a while test (i.e., < filehandle >). Note that outside of a while test, this does not happen.

The following is a complete listing of global special variables:

$_
$ARG

The default input and pattern-searching space.

$.
$INPUT_LINE_NUMBER
$NR

The current input line number of the last filehandle that was read. An explicit close on the filehandle resets the line number.

$/
$INPUT_RECORD_SEPARATOR
$RS

The input record separator; newline by default. If set to the null string, it treats blank lines as delimiters.

$,
$OUTPUT_FIELD_SEPARATOR
$OFS

The output field separator for the print operator.

$
$OUTPUT_RECORD_SEPARATOR
$ORS

The output record separator for the print operator.

$
$LIST_SEPARATOR

Like $, except that it applies to list values interpolated into a double-quoted string (or similar interpreted string). Default is a space.

$;
$SUBSCRIPT_SEPARATOR
$SUBSEP

The subscript separator for multidimensional array emulation. Default is 34.

$^L
$FORMAT_FORMFEED

What a format outputs to perform a formfeed. Default is f.

$:
$FORMAT_LINE_BREAK_CHARACTERS

The current set of characters after which a string may be broken to fill continuation fields (starting with ^) in a format. Default is ".

$^A
$ACCUMULATOR

The current value of the write accumulator for format lines.

$#
$OFMT

Contains the output format for printed numbers (deprecated).

$?
$CHILD_ERROR

The status returned by the last pipe close, backtick ('') command, or system operator.

$!
$OS_ERROR
$ERRNO

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.

$@
$EVAL_ERROR

The Perl syntax error message from the last eval command.

$$
$PROCESS_ID
$PID

The pid of the Perl process running this script.

$<
$REAL_USER_ID
$UID

The real user ID (uid) of this process.

$>
$EFFECTIVE_USER_ID
$EUID

The effective uid of this process.

$(
$REAL_GROUP_ID
$GID

The real group ID (gid) of this process.

$)
$EFFECTIVE_GROUP_ID
$EGID

The effective gid of this process.

$0
$PROGRAM_NAME

Contains the name of the file containing the Perl script being executed.

$[

The index of the first element in an array and of the first character in a substring. Default is 0.

$]
$PERL_VERSION

Returns the version plus patch level divided by 1,000.

$^D
$DEBUGGING

The current value of the debugging flags.

$^E
$EXTENDED_OS_ERROR

Extended error message on some platforms.

$^F
$SYSTEM_FD_MAX

The maximum system file descriptor, ordinarily 2.

$^H

Contains internal compiler hints enabled by certain pragmatic modules.

$^I
$INPLACE_EDIT

The current value of the inplace-edit extension. Use undef to disable inplace editing.

$^M

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

$^O
$OSNAME

Contains the name of the operating system for which the current Perl binary was compiled.

$^P
$PERLDB

The internal flag that the debugger clears so that it doesn’t debug itself.

$^T
$BASETIME

The time at which the script began running, in seconds since the epoch.

$^W
$WARNING

The current value of the warning switch, either true or false.

$^X
$EXECUTABLE_NAME

The name that the Perl binary itself was executed as. As of Perl 5.8, Perl asks the operating system instead of using C’s argv[0].

$ARGV

Contains the name of the current file when reading from <ARGV>.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.191.176.194