- 论坛徽章:
- 0
|
$_
The default input and pattern-searching space. The following pairs are equivalent:
while (<>) {...} # equivalent only in while!
while (defined($_ = <>)) {...}
/^Subject:/
$_ =~ /^Subject:/
tr/a-z/A-Z/
$_ =~ tr/a-z/A-Z/
chomp
chomp($_)
Here are the places where Perl will assume $_ even if you don't use 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 <FH> operation's result is tested by itself as the sole criterion of a while test. Outside a while test, this will not happen.
As $_ is a global variable, this may lead in some cases to unwanted side-effects. As of perl 5.9.1, you can now use a lexical version of $_ by declaring it in a file or in a block with my. Moreover, declaring our $_ restores the global $_ in the current scope.
(Mnemonic: underline is understood in certain operations.) |
|