=pod

I<Full documentation of predefined variables: L<perlvar>>

=head2 General Variables

=over 8

=item *

B<< $_ >> - The default input and pattern-searching space

=item *

B<< @_ >> - Within a subroutine the array C<@_> contains the parameters passed to
that subroutine

=item *

B<< $" >> - When an array or an array slice is interpolated into a double-quoted
string or a similar context such as C</.../>, its elements are
separated by this value

=item *

B<< $$ >> - The process number of the Perl running this script

=item *

B<< $0 >> - Contains the name of the program being executed

=item *

B<< $( >> - The real gid of this process

=item *

B<< $) >> - The effective gid of this process

=item *

B<< $< >> - The real uid of this process

=item *

B<< $> >> - The effective uid of this process

=item *

B<< $; >> - The subscript separator for multidimensional array emulation

=item *

B<< $a >>, B<< $b >> - Special package variables when using C<sort()>, see L<perlfunc/sort>

=item *

B<< %ENV >> - The hash C<%ENV> contains your current environment

=item *

B<< $] >> - The revision, version, and subversion of the Perl interpreter, represented
as a decimal of the form 5.XXXYYY, where XXX is the version / 1e3 and YYY
is the subversion / 1e6

=item *

B<< $^F >> - The maximum system file descriptor, ordinarily 2.  System file
descriptors are passed to C<exec()>ed processes, while higher file
descriptors are not

=item *

B<< @F >> - The array C<@F> contains the fields of each line read in when autosplit
mode is turned on

=item *

B<< @INC >> - The array C<@INC> contains the list of places that the C<do EXPR>,
C<require>, or C<use> constructs look for their library files

=item *

B<< %INC >> - The hash C<%INC> contains entries for each filename included via the
C<do>, C<require>, or C<use> operators

=item *

B<< $INC >> - As of 5.37.7 when an C<@INC> hook is executed the index of the C<@INC>
array that holds the hook will be localized into the C<$INC> variable

=item *

B<< $^I >> - The current value of the inplace-edit extension

=item *

B<< @ISA >> - Each package contains a special array called C<@ISA> which contains a list
of that class's parent classes, if any

=item *

B<< $^M >> - Perl can use the contents of C<$^M>
as an emergency memory pool after C<die()>ing

=item *

B<< ${^MAX_NESTED_EVAL_BEGIN_BLOCKS} >> - This variable determines the maximum number C<eval EXPR>/C<BEGIN> or
C<require>/C<BEGIN> block nesting that is allowed

=item *

B<< $^O >> - The name of the operating system under which this copy of Perl was
built, as determined during the configuration process

=item *

B<< %SIG >> - The hash C<%SIG> contains signal handlers for signals

=item *

B<< %{^HOOK} >> - This hash contains coderefs which are called when various perl keywords
which are hard or impossible to wrap are called

=item *

B<< $^T >> - The time at which the program began running, in seconds since the
epoch (beginning of 1970)

=item *

B<< $^V >> - The revision, version, and subversion of the Perl interpreter,
represented as a L<version> object

=item *

B<< $^X >> - The name used to execute the current copy of Perl, from C's
C<argv[0]> or (where supported) F</proc/self/exe>

=back

=head3 Scoping Rules of Regex Variables
X<Scoping Rules of Regex Variables>

=over 8

=item *

B<< $<I<digits>> ($1, $2, ...) >> - Contains the subpattern from the corresponding set of capturing
parentheses from the last successful pattern match in the current
dynamic scope

=item *

B<< @{^CAPTURE} >> - An array which exposes the contents of the capture buffers, if any, of
the last successful pattern match, not counting patterns matched
in nested blocks that have been exited already

=item *

B<< $& >> - The string matched by the last successful pattern match

=item *

B<< ${^MATCH} >> - It is only guaranteed to return a defined value when the pattern was
compiled or executed with the C</p> modifier

=item *

B<< $` >> - The string preceding whatever was matched by the last successful
pattern match

=item *

B<< ${^PREMATCH} >> - It is only guaranteed to return a defined value when the pattern was
executed with the C</p> modifier

=item *

B<< $' >> - The string following whatever was matched by the last successful
pattern match

=item *

B<< ${^POSTMATCH} >> - It is only guaranteed to return a defined value when the pattern was
compiled or executed with the C</p> modifier

=item *

B<< $+ >> - The text matched by the highest used capture group of the last
successful search pattern

=item *

B<< $^N >> - The text matched by the used group most-recently closed (i.e. the group
with the rightmost closing parenthesis) of the last successful match

=item *

B<< @+ >> - This array holds the offsets of the ends of the last successful
match and any matching capture buffers that the pattern contains

=item *

B<< %+ >> - Similar to C<@+>, the C<%+> hash allows access to the named capture
buffers, should they exist, in the last successful match in the
currently active dynamic scope

=item *

B<< @- >> - This array holds the offsets of the beginnings of the last successful
match and any capture buffers it contains

=item *

B<< %- >> - Similar to C<%+>, this variable allows access to the named capture
groups in the last successful match in the currently active dynamic
scope

=item *

B<< ${^LAST_SUCCESSFUL_PATTERN} >> - The last successful pattern that matched in the current scope

=item *

B<< $^R >> - The result of evaluation of the last successful C<(?{ code })>
regular expression assertion (see L<perlre>)

=item *

B<< ${^RE_COMPILE_RECURSION_LIMIT} >> - The current value giving the maximum number of open but unclosed
parenthetical groups there may be at any point during a regular
expression compilation

=item *

B<< ${^RE_DEBUG_FLAGS} >> - The current value of the regex debugging flags

=item *

B<< ${^RE_TRIE_MAXBUF} >> - Controls how certain regex optimisations are applied and how much memory they
utilize

=back

=head2 Variables related to filehandles

=over 8

=item *

B<< $ARGV >> - Contains the name of the current file when reading from C<< <> >>

=item *

B<< @ARGV >> - The array C<@ARGV> contains the command-line arguments intended for
the script

=item *

B<< ARGV >> - The special filehandle that iterates over command-line filenames in
C<@ARGV>

=item *

B<< ARGVOUT >> - The special filehandle that points to the currently open output file
when doing edit-in-place processing with B<-i>

=item *

B<< $, >> - The output field separator for the print operator

=item *

B<< $. >> - Current line number for the last filehandle accessed

=item *

B<< $/ >> - The input record separator, newline by default

=item *

B<< $\ >> - The output record separator for the print operator

=item *

B<< $| >> - If set to nonzero, forces a flush right away and after every write or
print on the currently selected output channel

=item *

B<< ${^LAST_FH} >> - This read-only variable contains a reference to the last-read filehandle

=back

=head3 Variables related to formats

=over 8

=item *

B<< $^A >> - The current value of the C<write()> accumulator for C<format()> lines

=item *

B<< $^L >> - What formats output as a form feed

=item *

B<< $% >> - The current page number of the currently selected output channel

=item *

B<< $- >> - The number of lines left on the page of the currently selected output
channel

=item *

B<< $: >> - The current set of characters after which a string may be broken to
fill continuation fields (starting with C<^>) in a format

=item *

B<< $= >> - The current page length (printable lines) of the currently selected
output channel

=item *

B<< $^ >> - The name of the current top-of-page format for the currently selected
output channel

=item *

B<< $~ >> - The name of the current report format for the currently selected
output channel

=back

=head2 Error Variables
X<error> X<exception>

=over 8

=item *

B<< ${^CHILD_ERROR_NATIVE} >> - The native status returned by the last pipe close, backtick (C<``>)
command, successful call to C<wait()> or C<waitpid()>, or from the
C<system()> operator

=item *

B<< $^E >> - Error information specific to the current operating system

=item *

B<< $^S >> - Current state of the interpreter

=item *

B<< $^W >> - The current value of the warning switch, initially true if B<-w> was
used, false otherwise, but directly modifiable

=item *

B<< ${^WARNING_BITS} >> - The current set of warning checks enabled by the C<use warnings> pragma

=item *

B<< $! >> - When referenced, C<$!> retrieves the current value
of the C C<errno> integer variable

=item *

B<< %! >> - Each element of C<%!> has a true value only if C<$!> is set to that
value

=item *

B<< $? >> - The status returned by the last pipe close, backtick (C<``>) command,
successful call to C<wait()> or C<waitpid()>, or from the C<system()>
operator

=item *

B<< $@ >> - The Perl error from the last C<eval> operator, i.e. the last exception that
was caught

=back

=head2 Variables related to the interpreter state

=over 8

=item *

B<< $^C >> - The current value of the flag associated with the B<-c> switch

=item *

B<< $^D >> - The current value of the debugging flags

=item *

B<< ${^GLOBAL_PHASE} >> - The current phase of the perl interpreter

=item *

B<< $^H >> - This variable contains compile-time hints for the Perl interpreter

=item *

B<< %^H >> - The C<%^H> hash provides the same scoping semantics as L<C<$^H>|/$^H>

=item *

B<< ${^OPEN} >> - An internal variable used by L<PerlIO>

=item *

B<< $^P >> - The internal variable for debugging support

=item *

B<< ${^TAINT} >> - Reflects if taint mode is on or off

=item *

B<< ${^SAFE_LOCALES} >> - Reflects if safe locale operations are available to this perl (when the
value is 1) or not (the value is 0)

=item *

B<< ${^UNICODE} >> - Reflects certain Unicode settings of Perl

=item *

B<< ${^UTF8CACHE} >> - This variable controls the state of the internal UTF-8 offset caching code

=item *

B<< ${^UTF8LOCALE} >> - This variable indicates whether a UTF-8 locale was detected by perl at
startup

=back

=head2 Deprecated and removed variables

=over 8

=item *

B<< $# >> - C<$#> was a variable that could be used to format printed numbers

=item *

B<< $* >> - C<$*> was a variable that you could use to enable multiline matching

=item *

B<< $[ >> - This variable stores the index of the first element in an array, and
of the first character in a substring

=item *

B<< ${^ENCODING} >> - It used to hold the I<object reference> to the C<Encode> object that was
used to convert the source code to Unicode

=item *

B<< ${^WIN32_SLOPPY_STAT} >> - This variable no longer has any function

=back