=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