X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperlvar.pod;h=a43ab6082bde069dc1192e273feaa9fdbc16c068;hb=2decb4fb82e001e3c9671c57b61232c651a9c22c;hp=9402608dafdcd59d63446547516c384b5d31da33;hpb=1e374101a32f2df640b9fad36d86b2ed88f6eaf8;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perlvar.pod b/pod/perlvar.pod index 9402608..a43ab60 100644 --- a/pod/perlvar.pod +++ b/pod/perlvar.pod @@ -45,9 +45,7 @@ you try to assign to this variable, either directly or indirectly through a reference, you'll raise a run-time exception. The following list is ordered by scalar variables first, then the -arrays, then the hashes (except $^M was added in the wrong place). -This is somewhat obscured because %ENV and %SIG are listed as -$ENV{expr} and $SIG{expr}. +arrays, then the hashes. =over 8 @@ -272,7 +270,7 @@ set, you'll get the record back in pieces. On VMS, record reads are done with the equivalent of C, so it's best not to mix record and non-record reads on the same file. (This is unlikely to be a problem, because any file you'd -want to read in record mode is probably usable in line mode.) +want to read in record mode is probably unusable in line mode.) Non-VMS systems do normal I/O, so it's safe to mix record and non-record reads of a file. @@ -719,8 +717,54 @@ C<$^F> when the open() or pipe() was called, not the time of the exec(). =item $^H -The current set of syntax checks enabled by C and other block -scoped compiler hints. See the documentation of C for more details. +WARNING: This variable is strictly for internal use only. Its availability, +behavior, and contents are subject to change without notice. + +This variable contains compile-time hints for the Perl interpreter. At the +end of compilation of a BLOCK the value of this variable is restored to the +value when the interpreter started to compile the BLOCK. + +When perl begins to parse any block construct that provides a lexical scope +(e.g., eval body, required file, subroutine body, loop body, or conditional +block), the existing value of $^H is saved, but its value is left unchanged. +When the compilation of the block is completed, it regains the saved value. +Between the points where its value is saved and restored, code that +executes within BEGIN blocks is free to change the value of $^H. + +This behavior provides the semantic of lexical scoping, and is used in, +for instance, the C pragma. + +The contents should be an integer; different bits of it are used for +different pragmatic flags. Here's an example: + + sub add_100 { $^H |= 0x100 } + + sub foo { + BEGIN { add_100() } + bar->baz($boon); + } + +Consider what happens during execution of the BEGIN block. At this point +the BEGIN block has already been compiled, but the body of foo() is still +being compiled. The new value of $^H will therefore be visible only while +the body of foo() is being compiled. + +Substitution of the above BEGIN block with: + + BEGIN { require strict; strict->import('vars') } + +demonstrates how C is implemented. Here's a conditional +version of the same lexical pragma: + + BEGIN { require strict; strict->import('vars') if $condition } + +=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. =item $INPLACE_EDIT @@ -816,7 +860,12 @@ and B<-C> filetests are based on this value. The current value of the warning switch, initially true if B<-w> was used, false otherwise, but directly modifiable. (Mnemonic: -related to the B<-w> switch.) See also L. +related to the B<-w> switch.) See also L. + +=item ${^Warnings} + +The current set of warning checks enabled by the C pragma. +See the documentation of C for more details. =item $EXECUTABLE_NAME @@ -861,7 +910,7 @@ The hash %INC contains entries for each filename included via the C, C, or C operators. The key is the filename you specified (with module names converted to pathnames), and the value is the location of the file found. The C -operator uses this array to determine whether a particular file has +operator uses this hash to determine whether a particular file has already been included. =item %ENV @@ -965,7 +1014,7 @@ Carp was available. The third line will be executed only if Carp was not available. See L, L, L, and -L for additional information. +L for additional information. =back @@ -1040,7 +1089,7 @@ C) is the scalar variable whose name is the single character control-C. This is better than typing a literal control-C into your program. -Finally, new in Perl 5.006, Perl variable names may be alphanumeric +Finally, new in Perl 5.6, Perl variable names may be alphanumeric strings that begin with control characters (or better yet, a caret). These variables must be written in the form C<${^Foo}>; the braces are not optional. C<${^Foo}> denotes the scalar variable whose