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

Get Perl in a Nutshell, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.