Some variables have a predefined, special meaning in Perl. They use punctuation characters after the usual variable indicator ($, @, or %), such as $_. The explicit, long-form names are the variables' equivalents when you use the English module by including use English; at the top of your program.
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:
For more information on regular expressions, see Section 4.6, "Regular Expressions" later in this chapter.
/Version: (.*)|Revision: (.*)/ && ($rev = $+);
#!/usr/local/bin/perl -w $words = "person|here"; $words =~ /(\w+)\|(\w+)/; print $^N; # Prints 'here'
Most of these variables apply only when using formats. See Section 4.11, "Unicode" later in this chapter.
Copyright © 2002 O'Reilly & Associates. All rights reserved.