=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 a global variable. However, between perl v5.10.0 and v5.24.0, it could be used lexically by writing C. Making C<$_> refer to the global C<$_> in the same scope was then possible with C. 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