=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<perlfunc/-X>

=item *

The pattern matching operations C<m//>, C<s///> and C<tr///> (aka C<y///>)
when used without an C<=~> operator.

=item *

The default iterator variable in a C<foreach> loop if no other
variable is supplied.

=item *

The implicit iterator variable in the C<grep()> and C<map()> functions.

=item *

The implicit variable of C<given()>.

=item *

The default place to put the next value or input record
when a C<< <FH> >>, C<readline>, C<readdir> or C<each>
operation's result is tested by itself as the sole criterion of a C<while>
test.  Outside a C<while> test, this will not happen.

=back

C<$_> is a global variable.

However, between perl v5.10.0 and v5.24.0, it could be used lexically by
writing C<my $_>.  Making C<$_> refer to the global C<$_> in the same scope
was then possible with C<our $_>.  This experimental feature was removed and is
now a fatal error, but you may encounter it in older code.

Mnemonic: underline is understood in certain operations.

=back