=over =item $ARG =item $_ X<$_> X<$ARG> 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 C<$_> even if you don't use it: =over 3 =item * The following functions use C<$_> as a default argument: abs, alarm, chomp, chop, chr, chroot, cos, defined, eval, evalbytes, exp, fc, glob, hex, int, lc, lcfirst, length, log, lstat, mkdir, oct, ord, pos, print, printf, quotemeta, readlink, readpipe, ref, require, reverse (in scalar context only), rmdir, say, sin, split (for its second argument), sqrt, stat, study, uc, ucfirst, unlink, unpack. =item * All file tests (C<-f>, C<-d>) except for C<-t>, which defaults to STDIN. See L =item * The pattern matching operations C, C and C (aka C) when used without an C<=~> operator. =item * The default iterator variable in a C loop if no other variable is supplied. =item * The implicit iterator variable in the C and C functions. =item * The implicit variable of C. =item * The default place to put the next value or input record when a C<< >>, C, C or C operation's result is tested by itself as the sole criterion of a C test. Outside a C test, this will not happen. =back C<$_> is by default a global variable. However, as of perl v5.10.0, you can use a lexical version of C<$_> by declaring it in a file or in a block with C. Moreover, declaring C restores the global C<$_> in the current scope. Though this seemed like a good idea at the time it was introduced, lexical C<$_> actually causes more problems than it solves. If you call a function that expects to be passed information via C<$_>, it may or may not work, depending on how the function is written, there not being any easy way to solve this. Just avoid lexical C<$_>, unless you are feeling particularly masochistic. For this reason lexical C<$_> is still experimental and will produce a warning unless warnings have been disabled. As with other experimental features, the behavior of lexical C<$_> is subject to change without notice, including change into a fatal error. Mnemonic: underline is understood in certain operations. =back