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
$
$OUTPUT_RECORD_SEPARATOR
$ORS
$
$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