Some variables have a predefined
and special meaning in Perl. They are the variables
that use punctuation characters
after the usual variable indicator (
$
,
@
, or
%
), such as
$_
.
The explicit, long-form names shown are the variables' equivalents
when you use the English module by including
"
use English;
" at the top of your program.
The most commonly used special variable is
$_
, which contains
the default input and pattern-searching string.
For example, in the following lines:
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 like
ord
and
int
, as well as the all file tests (
-f
,
-d
) except for
-t
, which defaults to
STDIN
.
-
Various list functions like
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
will 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
"\034"
.
-
$^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
"\n""
.
-
$^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 patchlevel divided by 1000.
-
$^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
die
s 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 that the current
Perl binary was compiled for.
-
$^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.
-
$ARGV
-
Contains the name of the current file when reading from
<ARGV>
.
-
@ARGV
-
The array containing the command-line arguments intended for the
script.
-
@INC
-
The array containing the list of places to look for Perl scripts
to be evaluated by the
do
,
require
, or
use
constructs.
-
@F
-
The array into which the input lines are split when the
-a
command-line switch is given.
-
%INC
-
The hash containing entries for the filename of each file that has been
included via
do
or
require
.
-
%ENV
-
The hash containing your current environment.
-
%SIG
-
The hash used to set signal handlers for various signals.
-
ARGV
-
The special filehandle that iterates over command line filenames in
@ARGV
. Usually written as the null filehandle in
<>
.
-
STDERR
-
The special filehandle for standard error in any package.
-
STDIN
-
The special filehandle for standard input in any package.
-
STDOUT
-
The special filehandle for standard output in any package.
-
DATA
-
The 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.
For more information on regular expressions,
see
Section 4.6, "Regular Expressions
" later in this chapter.
-
$
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.
-
$&
-
$MATCH
-
The string matched by the last successful pattern match.
-
$`
-
$PREMATCH
-
The string preceding whatever was matched by the last successful pattern
match.
-
$'
-
$POSTMATCH
-
The string following whatever was matched by the last successful pattern
match.
-
$+
-
$LAST_PAREN_MATCH
-
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 = $+);
Most of these variables only apply when using formats.
See
Section 4.10, "Formats
" later in this chapter.
-
$|
-
-
$OUTPUT_AUTOFLUSH
-
If set to nonzero, forces an
fflush(3)
after every
write
or
print
on the currently selected output channel.
-
$%
-
-
$FORMAT_PAGE_NUMBER
-
The current page number of the currently selected output channel.
-
$=
-
-
$FORMAT_LINES_PER_PAGE
-
The current page length (printable lines) of the currently selected output
channel. Default is 60.
-
$-
-
-
$FORMAT_LINES_LEFT
-
The number of lines left on the page of the currently selected output
channel.
-
$~
-
-
$FORMAT_NAME
-
The name of the current report format for the currently selected output
channel. Default is the name of the filehandle.
-
$^
-
-
$FORMAT_TOP_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.
Copyright © 2001 O'Reilly & Associates. All rights reserved. |