Add t/mro to the test list in perlhack
[p5sagit/p5-mst-13.2.git] / pod / perlvar.pod
index 5589ce2..e9c1e9f 100644 (file)
@@ -124,6 +124,7 @@ arrays, then the hashes.
 =item $ARG
 
 =item $_
+X<$_> X<$ARG>
 
 The default input and pattern-searching space.  The following pairs are
 equivalent:
@@ -191,6 +192,7 @@ declaring C<our $> restores the global C<$_> in the current scope.
 =item $a
 
 =item $b
+X<$a> X<$b>
 
 Special package variables when using sort(), see L<perlfunc/sort>.
 Because of this specialness $a and $b don't need to be declared
@@ -203,6 +205,7 @@ able to use them in the sort() comparison block or function.
 =over 8
 
 =item $<I<digits>>
+X<$1> X<$2> X<$3>
 
 Contains the subpattern from the corresponding set of capturing
 parentheses from the last pattern match, not counting patterns
@@ -213,6 +216,7 @@ scoped to the current BLOCK.
 =item $MATCH
 
 =item $&
+X<$&> X<$MATCH>
 
 The string matched by the last successful pattern match (not counting
 any matches hidden within a BLOCK or eval() enclosed by the current
@@ -222,9 +226,20 @@ and dynamically scoped to the current BLOCK.
 The use of this variable anywhere in a program imposes a considerable
 performance penalty on all regular expression matches.  See L</BUGS>.
 
+See L</@-> for a replacement.
+
+=item ${^MATCH}
+X<${^MATCH}>
+
+This is similar to C<$&> (C<$POSTMATCH>) except that it does not incur the
+performance penalty associated with that variable, and is only guaranteed
+to return a defined value when the pattern was compiled or executed with
+the C</p> modifier.
+
 =item $PREMATCH
 
 =item $`
+X<$`> X<$PREMATCH>
 
 The string preceding whatever was matched by the last successful
 pattern match (not counting any matches hidden within a BLOCK or eval
@@ -234,9 +249,20 @@ string.)  This variable is read-only.
 The use of this variable anywhere in a program imposes a considerable
 performance penalty on all regular expression matches.  See L</BUGS>.
 
+See L</@-> for a replacement.
+
+=item ${^PREMATCH}
+X<${^PREMATCH}>
+
+This is similar to C<$`> ($PREMATCH) except that it does not incur the
+performance penalty associated with that variable, and is only guaranteed
+to return a defined value when the pattern was compiled or executed with
+the C</p> modifier.
+
 =item $POSTMATCH
 
 =item $'
+X<$'> X<$POSTMATCH>
 
 The string following whatever was matched by the last successful
 pattern match (not counting any matches hidden within a BLOCK or eval()
@@ -252,9 +278,20 @@ This variable is read-only and dynamically scoped to the current BLOCK.
 The use of this variable anywhere in a program imposes a considerable
 performance penalty on all regular expression matches.  See L</BUGS>.
 
+See L</@-> for a replacement.
+
+=item ${^POSTMATCH}
+X<${^POSTMATCH}>
+
+This is similar to C<$'> (C<$POSTMATCH>) except that it does not incur the
+performance penalty associated with that variable, and is only guaranteed
+to return a defined value when the pattern was compiled or executed with
+the C</p> modifier.
+
 =item $LAST_PAREN_MATCH
 
 =item $+
+X<$+> X<$LAST_PAREN_MATCH>
 
 The text matched by the last bracket of the last successful search pattern.
 This is useful if you don't know which one of a set of alternative patterns
@@ -265,7 +302,10 @@ matched. For example:
 (Mnemonic: be positive and forward looking.)
 This variable is read-only and dynamically scoped to the current BLOCK.
 
+=item $LAST_SUBMATCH_RESULT
+
 =item $^N
+X<$^N>
 
 The text matched by the used group most-recently closed (i.e. the group
 with the rightmost closing parenthesis) of the last successful search
@@ -286,6 +326,7 @@ This variable is dynamically scoped to the current BLOCK.
 =item @LAST_MATCH_END
 
 =item @+
+X<@+> X<@LAST_MATCH_END>
 
 This array holds the offsets of the ends of the last successful
 submatches in the currently active dynamic scope.  C<$+[0]> is
@@ -298,6 +339,29 @@ past where $2 ends, and so on.  You can use C<$#+> to determine
 how many subgroups were in the last successful match.  See the
 examples given for the C<@-> variable.
 
+=item %+
+X<%+>
+
+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.
+
+For example, C<$+{foo}> is equivalent to C<$1> after the following match:
+
+  'foo' =~ /(?<foo>foo)/;
+
+The keys of the C<%+> hash list only the names of buffers that have
+captured (and that are thus associated to defined values).
+
+The underlying behaviour of C<%+> is provided by the
+L<Tie::Hash::NamedCapture> module.
+
+B<Note:> C<%-> and C<%+> are tied views into a common internal hash
+associated with the last successful regular expression. Therefore mixing
+iterative access to them via C<each> may have unpredictable results.
+Likewise, if the last successful match changes, then the results may be
+surprising.
+
 =item HANDLE->input_line_number(EXPR)
 
 =item $INPUT_LINE_NUMBER
@@ -305,8 +369,9 @@ examples given for the C<@-> variable.
 =item $NR
 
 =item $.
+X<$.> X<$NR> X<$INPUT_LINE_NUMBER> X<line number>
 
-Current line number for the last filehandle accessed. 
+Current line number for the last filehandle accessed.
 
 Each filehandle in Perl counts the number of lines that have been read
 from it.  (Depending on the value of C<$/>, Perl's idea of what
@@ -339,6 +404,7 @@ which handle you last accessed.
 =item $RS
 
 =item $/
+X<$/> X<$RS> X<$INPUT_RECORD_SEPARATOR>
 
 The input record separator, newline by default.  This 
 influences Perl's idea of what a "line" is.  Works like B<awk>'s RS
@@ -374,7 +440,8 @@ will read a record of no more than 32768 bytes from FILE.  If you're
 not reading from a record-oriented file (or your OS doesn't have
 record-oriented files), then you'll likely get a full chunk of data
 with every read.  If a record is larger than the record size you've
-set, you'll get the record back in pieces.
+set, you'll get the record back in pieces.  Trying to set the record
+size to zero or less will cause reading in the (rest of the) whole file.
 
 On VMS, record reads are done with the equivalent of C<sysread>,
 so it's best not to mix record and non-record reads on the same
@@ -390,6 +457,7 @@ See also L<perlport/"Newlines">.  Also see C<$.>.
 =item $OUTPUT_AUTOFLUSH
 
 =item $|
+X<$|> X<autoflush> X<flush> X<$OUTPUT_AUTOFLUSH>
 
 If set to nonzero, forces a flush right away and after every write
 or print on the currently selected output channel.  Default is 0
@@ -410,13 +478,11 @@ for that.  (Mnemonic: when you want your pipes to be piping hot.)
 =item $OFS
 
 =item $,
+X<$,> X<$OFS> X<$OUTPUT_FIELD_SEPARATOR>
 
-The output field separator for the print operator.  Ordinarily the
-print operator simply prints out its arguments without further
-adornment.  To get behavior more like B<awk>, set this variable as
-you would set B<awk>'s OFS variable to specify what is printed
-between fields.  (Mnemonic: what is printed when there is a "," in
-your print statement.)
+The output field separator for the print operator.  If defined, this
+value is printed between each of print's arguments.  Default is C<undef>.
+(Mnemonic: what is printed when there is a "," in your print statement.)
 
 =item IO::Handle->output_record_separator EXPR
 
@@ -425,19 +491,17 @@ your print statement.)
 =item $ORS
 
 =item $\
+X<$\> X<$ORS> X<$OUTPUT_RECORD_SEPARATOR>
 
-The output record separator for the print operator.  Ordinarily the
-print operator simply prints out its arguments as is, with no
-trailing newline or other end-of-record string added.  To get
-behavior more like B<awk>, set this variable as you would set
-B<awk>'s ORS variable to specify what is printed at the end of the
-print.  (Mnemonic: you set C<$\> instead of adding "\n" at the
-end of the print.  Also, it's just like C<$/>, but it's what you
-get "back" from Perl.)
+The output record separator for the print operator.  If defined, this
+value is printed after the last of print's arguments.  Default is C<undef>.
+(Mnemonic: you set C<$\> instead of adding "\n" at the end of the print.
+Also, it's just like C<$/>, but it's what you get "back" from Perl.)
 
 =item $LIST_SEPARATOR
 
 =item $"
+X<$"> X<$LIST_SEPARATOR>
 
 This is like C<$,> except that it applies to array and slice values
 interpolated into a double-quoted string (or similar interpreted
@@ -448,6 +512,7 @@ string).  Default is a space.  (Mnemonic: obvious, I think.)
 =item $SUBSEP
 
 =item $;
+X<$;> X<$SUBSEP> X<SUBSCRIPT_SEPARATOR>
 
 The subscript separator for multidimensional array emulation.  If you
 refer to a hash element as
@@ -480,6 +545,7 @@ in L<perllol>.
 =item $FORMAT_PAGE_NUMBER
 
 =item $%
+X<$%> X<$FORMAT_PAGE_NUMBER>
 
 The current page number of the currently selected output channel.
 Used with formats.
@@ -490,6 +556,7 @@ Used with formats.
 =item $FORMAT_LINES_PER_PAGE
 
 =item $=
+X<$=> X<$FORMAT_LINES_PER_PAGE>
 
 The current page length (printable lines) of the currently selected
 output channel.  Default is 60.  
@@ -501,6 +568,7 @@ Used with formats.
 =item $FORMAT_LINES_LEFT
 
 =item $-
+X<$-> X<$FORMAT_LINES_LEFT>
 
 The number of lines left on the page of the currently selected output
 channel.  
@@ -510,6 +578,7 @@ Used with formats.
 =item @LAST_MATCH_START
 
 =item @-
+X<@-> X<@LAST_MATCH_START>
 
 $-[0] is the offset of the start of the last successful match.
 C<$-[>I<n>C<]> is the offset of the start of the substring matched by
@@ -544,15 +613,58 @@ After a match against some variable $var:
 
 =item C<$2> is the same as C<substr($var, $-[2], $+[2] - $-[2])>
 
-=item C<$3> is the same as C<substr $var, $-[3], $+[3] - $-[3])>
+=item C<$3> is the same as C<substr($var, $-[3], $+[3] - $-[3])>
 
 =back
 
+=item %-
+X<%->
+
+Similar to C<%+>, this variable allows access to the named capture buffers
+in the last successful match in the currently active dynamic scope. To
+each capture buffer name found in the regular expression, it associates a
+reference to an array containing the list of values captured by all
+buffers with that name (should there be several of them), in the order
+where they appear.
+
+Here's an example:
+
+    if ('1234' =~ /(?<A>1)(?<B>2)(?<A>3)(?<B>4)/) {
+        foreach my $bufname (sort keys %-) {
+            my $ary = $-{$bufname};
+            foreach my $idx (0..$#$ary) {
+                print "\$-{$bufname}[$idx] : ",
+                      (defined($ary->[$idx]) ? "'$ary->[$idx]'" : "undef"),
+                      "\n";
+            }
+        }
+    }
+
+would print out:
+
+    $-{A}[0] : '1'
+    $-{A}[1] : '3'
+    $-{B}[0] : '2'
+    $-{B}[1] : '4'
+
+The keys of the C<%-> hash correspond to all buffer names found in
+the regular expression.
+
+The behaviour of C<%-> is implemented via the
+L<Tie::Hash::NamedCapture> module.
+
+B<Note:> C<%-> and C<%+> are tied views into a common internal hash
+associated with the last successful regular expression. Therefore mixing
+iterative access to them via C<each> may have unpredictable results.
+Likewise, if the last successful match changes, then the results may be
+surprising.
+
 =item HANDLE->format_name(EXPR)
 
 =item $FORMAT_NAME
 
 =item $~
+X<$~> X<$FORMAT_NAME>
 
 The name of the current report format for the currently selected output
 channel.  Default is the name of the filehandle.  (Mnemonic: brother to
@@ -563,6 +675,7 @@ C<$^>.)
 =item $FORMAT_TOP_NAME
 
 =item $^
+X<$^> X<$FORMAT_TOP_NAME>
 
 The name of the current top-of-page format for the currently selected
 output channel.  Default is the name of the filehandle with _TOP
@@ -573,6 +686,7 @@ appended.  (Mnemonic: points to top of page.)
 =item $FORMAT_LINE_BREAK_CHARACTERS
 
 =item $:
+X<$:> X<FORMAT_LINE_BREAK_CHARACTERS>
 
 The current set of characters after which a string may be broken to
 fill continuation fields (starting with ^) in a format.  Default is
@@ -584,12 +698,14 @@ poetry is a part of a line.)
 =item $FORMAT_FORMFEED
 
 =item $^L
+X<$^L> X<$FORMAT_FORMFEED>
 
 What formats output as a form feed.  Default is \f.
 
 =item $ACCUMULATOR
 
 =item $^A
+X<$^A> X<$ACCUMULATOR>
 
 The current value of the write() accumulator for format() lines.  A format
 contains formline() calls that put their result into C<$^A>.  After
@@ -601,6 +717,7 @@ L<perlfunc/formline()>.
 =item $CHILD_ERROR
 
 =item $?
+X<$?> X<$CHILD_ERROR>
 
 The status returned by the last pipe close, backtick (C<``>) command,
 successful call to wait() or waitpid(), or from the system()
@@ -632,6 +749,7 @@ status; see L<perlvms/$?> for details.
 Also see L<Error Indicators>.
 
 =item ${^CHILD_ERROR_NATIVE}
+X<$^CHILD_ERROR_NATIVE>
 
 The native status returned by the last pipe close, backtick (C<``>)
 command, successful call to wait() or waitpid(), or from the system()
@@ -643,18 +761,19 @@ Under VMS this reflects the actual VMS exit status; i.e. it is the same
 as $? when the pragma C<use vmsish 'status'> is in effect.
 
 =item ${^ENCODING}
+X<$^ENCODING>
 
 The I<object reference> to the Encode object that is used to convert
 the source code to Unicode.  Thanks to this variable your perl script
 does not have to be written in UTF-8.  Default is I<undef>.  The direct
-manipulation of this variable is highly discouraged.  See L<encoding>
-for more details.
+manipulation of this variable is highly discouraged.
 
 =item $OS_ERROR
 
 =item $ERRNO
 
 =item $!
+X<$!> X<$ERRNO> X<$OS_ERROR>
 
 If used numerically, yields the current value of the C C<errno>
 variable, or in other words, if a system or library call fails, it
@@ -684,7 +803,12 @@ went bang?)
 
 Also see L<Error Indicators>.
 
+=item %OS_ERROR
+
+=item %ERRNO
+
 =item %!
+X<%!>
 
 Each element of C<%!> has a true value only if C<$!> is set to that
 value.  For example, C<$!{ENOENT}> is true if and only if the current
@@ -699,6 +823,7 @@ validity of C<$!>.
 =item $EXTENDED_OS_ERROR
 
 =item $^E
+X<$^E> X<$EXTENDED_OS_ERROR>
 
 Error information specific to the current operating system.  At
 the moment, this differs from C<$!> under only VMS, OS/2, and Win32
@@ -728,6 +853,7 @@ Also see L<Error Indicators>.
 =item $EVAL_ERROR
 
 =item $@
+X<$@> X<$EVAL_ERROR>
 
 The Perl syntax error message from the last eval() operator.
 If $@ is the null string, the last eval() parsed and executed
@@ -745,6 +871,7 @@ Also see L<Error Indicators>.
 =item $PID
 
 =item $$
+X<$$> X<$PID> X<$PROCESS_ID>
 
 The process number of the Perl running this script.  You should
 consider this variable read-only, although it will be altered
@@ -761,6 +888,7 @@ you may use the CPAN module C<Linux::Pid>.
 =item $UID
 
 =item $<
+X<< $< >> X<$UID> X<$REAL_USER_ID>
 
 The real uid of this process.  (Mnemonic: it's the uid you came I<from>,
 if you're running setuid.)  You can change both the real uid and
@@ -773,6 +901,7 @@ detect any possible errors.
 =item $EUID
 
 =item $>
+X<< $> >> X<$EUID> X<$EFFECTIVE_USER_ID>
 
 The effective uid of this process.  Example:
 
@@ -792,6 +921,7 @@ supporting setreuid().
 =item $GID
 
 =item $(
+X<$(> X<$GID> X<$REAL_GROUP_ID>
 
 The real gid of this process.  If you are on a machine that supports
 membership in multiple groups simultaneously, gives a space separated
@@ -801,7 +931,9 @@ the same as the first number.
 
 However, a value assigned to C<$(> must be a single number used to
 set the real gid.  So the value given by C<$(> should I<not> be assigned
-back to C<$(> without being forced numeric, such as by adding zero.
+back to C<$(> without being forced numeric, such as by adding zero. Note
+that this is different to the effective gid (C<$)>) which does take a
+list.
 
 You can change both the real gid and the effective gid at the same
 time by using POSIX::setgid().  Changes to $( require a check to $!
@@ -815,6 +947,7 @@ group you I<left>, if you're running setgid.)
 =item $EGID
 
 =item $)
+X<$)> X<$EGID> X<$EFFECTIVE_GROUP_ID>
 
 The effective gid of this process.  If you are on a machine that
 supports membership in multiple groups simultaneously, gives a space
@@ -844,6 +977,7 @@ and C<$)> can be swapped only on machines supporting setregid().
 =item $PROGRAM_NAME
 
 =item $0
+X<$0> X<$PROGRAM_NAME>
 
 Contains the name of the program being executed.
 
@@ -854,7 +988,7 @@ changes.  Modifying the $0 is more useful as a way of indicating the
 current program state than it is for hiding the program you're
 running.  (Mnemonic: same as B<sh> and B<ksh>.)
 
-Note that there are platform specific limitations on the the maximum
+Note that there are platform specific limitations on the maximum
 length of C<$0>.  In the most extreme case it may be limited to the
 space occupied by the original C<$0>.
 
@@ -872,11 +1006,12 @@ and version).  This is an operating system feature, Perl cannot help it.
 
 In multithreaded scripts Perl coordinates the threads so that any
 thread may modify its copy of the C<$0> and the change becomes visible
-to ps(1) (assuming the operating system plays along).  Note that the
+to ps(1) (assuming the operating system plays along).  Note that
 the view of C<$0> the other threads have will not change since they
 have their own copies of it.
 
 =item $[
+X<$[>
 
 The index of the first element in an array, and of the first character
 in a substring.  Default is 0, but you could theoretically set it
@@ -890,11 +1025,12 @@ directive, and cannot influence the behavior of any other file.
 Its use is highly discouraged.
 
 Note that, unlike other compile-time directives (such as L<strict>),
-assignment to $[ can be seen from outer lexical scopes in the same file.
-However, you can use local() on it to strictly bound its value to a
+assignment to C<$[> can be seen from outer lexical scopes in the same file.
+However, you can use local() on it to strictly bind its value to a
 lexical block.
 
 =item $]
+X<$]>
 
 The version + patchlevel / 1000 of the Perl interpreter.  This variable
 can be used to determine whether the Perl interpreter executing a
@@ -913,16 +1049,18 @@ the Perl version that allows accurate string comparisons.
 =item $COMPILING
 
 =item $^C
+X<$^C> X<$COMPILING>
 
 The current value of the flag associated with the B<-c> switch.
 Mainly of use with B<-MO=...> to allow code to alter its behavior
 when being compiled, such as for example to AUTOLOAD at compile
-time rather than normal, deferred loading.  See L<perlcc>.  Setting
+time rather than normal, deferred loading.  Setting
 C<$^C = 1> is similar to calling C<B::minus_c>.
 
 =item $DEBUGGING
 
 =item $^D
+X<$^D> X<$DEBUGGING>
 
 The current value of the debugging flags.  (Mnemonic: value of B<-D>
 switch.) May be read or set. Like its command-line equivalent, you can use
@@ -946,6 +1084,7 @@ Under normal situations this variable should be of no interest to you.
 =item $SYSTEM_FD_MAX
 
 =item $^F
+X<$^F> X<$SYSTEM_FD_MAX>
 
 The maximum system file descriptor, ordinarily 2.  System file
 descriptors are passed to exec()ed processes, while higher file
@@ -1001,37 +1140,38 @@ version of the same lexical pragma:
 
 =item %^H
 
-WARNING: This variable is strictly for internal use only.  Its availability,
-behavior, and contents are subject to change without notice.
-
 The %^H hash provides the same scoping semantic as $^H.  This makes it
-useful for implementation of lexically scoped pragmas.
+useful for implementation of lexically scoped pragmas. See L<perlpragma>.
 
 =item $INPLACE_EDIT
 
 =item $^I
+X<$^I> X<$INPLACE_EDIT>
 
 The current value of the inplace-edit extension.  Use C<undef> to disable
 inplace editing.  (Mnemonic: value of B<-i> switch.)
 
 =item $^M
+X<$^M>
 
 By default, running out of memory is an untrappable, fatal error.
 However, if suitably built, Perl can use the contents of C<$^M>
 as an emergency memory pool after die()ing.  Suppose that your Perl
-were compiled with -DPERL_EMERGENCY_SBRK and used Perl's malloc.
+were compiled with C<-DPERL_EMERGENCY_SBRK> and used Perl's malloc.
 Then
 
     $^M = 'a' x (1 << 16);
 
 would allocate a 64K buffer for use in an emergency.  See the
 F<INSTALL> file in the Perl distribution for information on how to
-enable this option.  To discourage casual use of this advanced
-feature, there is no L<English|English> long name for this variable.
+add custom C compilation flags when compiling perl.  To discourage casual
+use of this advanced feature, there is no L<English|English> long name for
+this variable.
 
 =item $OSNAME
 
 =item $^O
+X<$^O> X<$OSNAME>
 
 The name of the operating system under which this copy of Perl was
 built, as determined during the configuration process.  The value
@@ -1053,6 +1193,7 @@ part describes the output layers.
 =item $PERLDB
 
 =item $^P
+X<$^P> X<$PERLDB>
 
 The internal variable for debugging support.  The meanings of the
 various bits are subject to change, but currently indicate:
@@ -1112,6 +1253,7 @@ run-time only.  This is a new mechanism and the details may change.
 =item $LAST_REGEXP_CODE_RESULT
 
 =item $^R
+X<$^R> X<$LAST_REGEXP_CODE_RESULT>
 
 The result of evaluation of the last successful C<(?{ code })>
 regular expression assertion (see L<perlre>).  May be written to.
@@ -1119,6 +1261,7 @@ regular expression assertion (see L<perlre>).  May be written to.
 =item $EXCEPTIONS_BEING_CAUGHT
 
 =item $^S
+X<$^S> X<$EXCEPTIONS_BEING_CAUGHT>
 
 Current state of the interpreter.
 
@@ -1133,6 +1276,7 @@ The first state may happen in $SIG{__DIE__} and $SIG{__WARN__} handlers.
 =item $BASETIME
 
 =item $^T
+X<$^T> X<$BASETIME>
 
 The time at which the program began running, in seconds since the
 epoch (beginning of 1970).  The values returned by the B<-M>, B<-A>,
@@ -1151,6 +1295,12 @@ documentation for the C<-C> switch for more information about
 the possible values. This variable is set during Perl startup
 and is thereafter read-only.
 
+=item ${^UTF8CACHE}
+
+This variable controls the state of the internal UTF-8 offset caching code.
+1 for on (the default), 0 for off, -1 to debug the caching code by checking
+all its results against linear scans, and panicking on any discrepancy.
+
 =item ${^UTF8LOCALE}
 
 This variable indicates whether an UTF-8 locale was detected by perl at
@@ -1161,18 +1311,22 @@ switch); see L<perlrun> for more info on this.
 =item $PERL_VERSION
 
 =item $^V
+X<$^V> X<$PERL_VERSION>
 
 The revision, version, and subversion of the Perl interpreter, represented
 as a string composed of characters with those ordinals.  Thus in Perl v5.6.0
 it equals C<chr(5) . chr(6) . chr(0)> and will return true for
 C<$^V eq v5.6.0>.  Note that the characters in this string value can
-potentially be in Unicode range.
+potentially be greater than 255.
+
+This variable first appeared in perl 5.6.0; earlier versions of perl will
+see an undefined value.
 
 This can be used to determine whether the Perl interpreter executing a
 script is in the right range of versions.  (Mnemonic: use ^V for Version
 Control.)  Example:
 
-    warn "No \"our\" declarations!\n" if $^V and $^V lt v5.6.0;
+    warn "Hashes not randomized!\n" if !$^V or $^V lt v5.8.1
 
 To convert C<$^V> into its string representation use sprintf()'s
 C<"%vd"> conversion:
@@ -1187,6 +1341,7 @@ See also C<$]> for an older representation of the Perl version.
 =item $WARNING
 
 =item $^W
+X<$^W> X<$WARNING>
 
 The current value of the warning switch, initially true if B<-w>
 was used, false otherwise, but directly modifiable.  (Mnemonic:
@@ -1197,12 +1352,26 @@ related to the B<-w> switch.)  See also L<warnings>.
 The current set of warning checks enabled by the C<use warnings> pragma.
 See the documentation of C<warnings> for more details.
 
+=item ${^WIN32_SLOPPY_STAT}
+
+If this variable is set to a true value, then stat() on Windows will
+not try to open the file. This means that the link count cannot be
+determined and file attributes may be out of date if additional
+hardlinks to the file exist. On the other hand, not opening the file
+is considerably faster, especially for files on network drives.
+
+This variable could be set in the F<sitecustomize.pl> file to
+configure the local Perl installation to use "sloppy" stat() by
+default.  See L<perlrun> for more information about site
+customization.
+
 =item $EXECUTABLE_NAME
 
 =item $^X
+X<$^X> X<$EXECUTABLE_NAME>
 
 The name used to execute the current copy of Perl, from C's
-C<argv[0]>.
+C<argv[0]> or (where supported) F</proc/self/exe>.
 
 Depending on the host operating system, the value of $^X may be
 a relative or absolute pathname of the perl program file, or may
@@ -1249,6 +1418,7 @@ command or referenced as a file.
           unless $secure_perl_path =~ m/$Config{_exe}$/i;}
 
 =item ARGV
+X<ARGV>
 
 The special filehandle that iterates over command-line filenames in
 C<@ARGV>. Usually written as the null filehandle in the angle operator
@@ -1260,10 +1430,12 @@ may not cause your function to automatically read the contents of all the
 files in C<@ARGV>.
 
 =item $ARGV
+X<$ARGV>
 
 contains the name of the current file when reading from <>.
 
 =item @ARGV
+X<@ARGV>
 
 The array @ARGV contains the command-line arguments intended for
 the script.  C<$#ARGV> is generally the number of arguments minus
@@ -1271,6 +1443,7 @@ one, because C<$ARGV[0]> is the first argument, I<not> the program's
 command name itself.  See C<$0> for the command name.
 
 =item ARGVOUT
+X<ARGVOUT>
 
 The special filehandle that points to the currently open output file
 when doing edit-in-place processing with B<-i>.  Useful when you have
@@ -1278,6 +1451,7 @@ to do a lot of inserting and don't want to keep modifying $_.  See
 L<perlrun> for the B<-i> switch.
 
 =item @F
+X<@F>
 
 The array @F contains the fields of each line read in when autosplit
 mode is turned on.  See L<perlrun> for the B<-a> switch.  This array
@@ -1285,6 +1459,7 @@ is package-specific, and must be declared or given a full package name
 if not in package main when running under C<strict 'vars'>.
 
 =item @INC
+X<@INC>
 
 The array @INC contains the list of places that the C<do EXPR>,
 C<require>, or C<use> constructs look for their library files.  It
@@ -1303,12 +1478,16 @@ You can also insert hooks into the file inclusion system by putting Perl
 code directly into @INC.  Those hooks may be subroutine references, array
 references or blessed objects.  See L<perlfunc/require> for details.
 
+=item @ARG
+
 =item @_
+X<@_> X<@ARG>
 
 Within a subroutine the array @_ contains the parameters passed to that
 subroutine.  See L<perlsub>.
 
 =item %INC
+X<%INC>
 
 The hash %INC contains entries for each filename included via the
 C<do>, C<require>, or C<use> operators.  The key is the filename
@@ -1326,6 +1505,7 @@ specific info.
 =item %ENV
 
 =item $ENV{expr}
+X<%ENV>
 
 The hash %ENV contains your current environment.  Setting a
 value in C<ENV> changes the environment for any child processes
@@ -1334,8 +1514,9 @@ you subsequently fork() off.
 =item %SIG
 
 =item $SIG{expr}
+X<%SIG>
 
-The hash %SIG contains signal handlers for signals.  For example:
+The hash C<%SIG> contains signal handlers for signals.  For example:
 
     sub handler {      # 1st argument is signal name
        my($sig) = @_;
@@ -1374,24 +1555,29 @@ immediate (also known as "unsafe") to deferred, also known as
 Certain internal hooks can be also set using the %SIG hash.  The
 routine indicated by C<$SIG{__WARN__}> is called when a warning message is
 about to be printed.  The warning message is passed as the first
-argument.  The presence of a __WARN__ hook causes the ordinary printing
-of warnings to STDERR to be suppressed.  You can use this to save warnings
+argument.  The presence of a C<__WARN__> hook causes the ordinary printing
+of warnings to C<STDERR> to be suppressed.  You can use this to save warnings
 in a variable, or turn warnings into fatal errors, like this:
 
     local $SIG{__WARN__} = sub { die $_[0] };
     eval $proggie;
 
+As the C<'IGNORE'> hook is not supported by C<__WARN__>, you can
+disable warnings using the empty subroutine:
+
+    local $SIG{__WARN__} = sub {};
+
 The routine indicated by C<$SIG{__DIE__}> is called when a fatal exception
 is about to be thrown.  The error message is passed as the first
-argument.  When a __DIE__ hook routine returns, the exception
+argument.  When a C<__DIE__> hook routine returns, the exception
 processing continues as it would have in the absence of the hook,
-unless the hook routine itself exits via a C<goto>, a loop exit, or a die().
+unless the hook routine itself exits via a C<goto>, a loop exit, or a C<die()>.
 The C<__DIE__> handler is explicitly disabled during the call, so that you
 can die from a C<__DIE__> handler.  Similarly for C<__WARN__>.
 
 Due to an implementation glitch, the C<$SIG{__DIE__}> hook is called
 even inside an eval().  Do not use this to rewrite a pending exception
-in C<$@>, or as a bizarre substitute for overriding CORE::GLOBAL::die().
+in C<$@>, or as a bizarre substitute for overriding C<CORE::GLOBAL::die()>.
 This strange action at a distance may be fixed in a future release
 so that C<$SIG{__DIE__}> is only called if your program is about
 to exit, as was the original intent.  Any other use is deprecated.
@@ -1420,6 +1606,7 @@ L<warnings> for additional information.
 =back
 
 =head2 Error Indicators
+X<error> X<exception>
 
 The variables C<$@>, C<$!>, C<$^E>, and C<$?> contain information
 about different types of error conditions that may appear during
@@ -1526,7 +1713,8 @@ in the scope of C<use English>.  For that reason, saying C<use
 English> in libraries is strongly discouraged.  See the
 Devel::SawAmpersand module documentation from CPAN
 ( http://www.cpan.org/modules/by-module/Devel/ )
-for more information.
+for more information. Writing C<use English '-no_match_vars';>
+avoids the performance penalty.
 
 Having to even think about the C<$^S> variable in your exception
 handlers is simply wrong.  C<$SIG{__DIE__}> as currently implemented