X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperlvar.pod;h=68c8303aea6c2b77d733d8cf4f2c850bcf69eb56;hb=3b910f1cdd4f8ae1cc44d538e0b3182f132b4bf7;hp=4ba6fcff1e24a015eaebe33d89811ae22726f3a1;hpb=7619c85e4dd9a96a05fc0fc72ace9eb2b9f1bc6f;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perlvar.pod b/pod/perlvar.pod index 4ba6fcf..68c8303 100644 --- a/pod/perlvar.pod +++ b/pod/perlvar.pod @@ -177,6 +177,11 @@ test. Outside a C test, this will not happen. =back +As C<$_> is a global variable, this may lead in some cases to unwanted +side-effects. As of perl 5.9.1, you can now use a lexical version of +C<$_> by declaring it in a file or in a block with C. Moreover, +declaring C restores the global C<$_> in the current scope. + (Mnemonic: underline is understood in certain operations.) =back @@ -189,10 +194,9 @@ test. Outside a C test, this will not happen. Special package variables when using sort(), see L. Because of this specialness $a and $b don't need to be declared -(using local(), use vars, or our()) even when using the strict -vars pragma. Don't lexicalize them with C or C -if you want to be able to use them in the sort() comparison block -or function. +(using use vars, or our()) even when using the C pragma. +Don't lexicalize them with C or C if you want to be +able to use them in the sort() comparison block or function. =back @@ -370,7 +374,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, so it's best not to mix record and non-record reads on the same @@ -407,12 +412,9 @@ for that. (Mnemonic: when you want your pipes to be piping hot.) =item $, -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, set this variable as -you would set B'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. +(Mnemonic: what is printed when there is a "," in your print statement.) =item IO::Handle->output_record_separator EXPR @@ -422,14 +424,10 @@ your print statement.) =item $\ -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, set this variable as you would set -B'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. +(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 @@ -471,20 +469,6 @@ taken for something more important.) Consider using "real" multidimensional arrays as described in L. -=item $OFMT - -=item $# - -The output format for printed numbers. This variable is a half-hearted -attempt to emulate B's OFMT variable. There are times, however, -when B and Perl have differing notions of what counts as -numeric. The initial value is "%.Ig", where I is the value -of the macro DBL_DIG from your system's F. This is different from -B's default OFMT setting of "%.6g", so you need to set C<$#> -explicitly to get B's value. (Mnemonic: # is the number sign.) - -Use of C<$#> is deprecated. - =item HANDLE->format_page_number(EXPR) =item $FORMAT_PAGE_NUMBER @@ -526,9 +510,9 @@ C<$-[>IC<]> is the offset of the start of the substring matched by I-th subpattern, or undef if the subpattern did not match. Thus after a match against $_, $& coincides with C. Similarly, C<$>I coincides with CIC<], -$+[>IC<] - $-[>IC<]> if C<$-[>IC<]> is defined, and $+ coincides with -C. One can use C<$#-> to find the last +$+[0] - $-[0]>. Similarly, $I coincides with C if C<$-[n]> is defined, and $+ coincides with +C. One can use C<$#-> to find the last matched subgroup in the last successful match. Contrast with C<$#+>, the number of subgroups in the regular expression. Compare with C<@+>. @@ -554,7 +538,7 @@ After a match against some variable $var: =item C<$2> is the same as C -=item C<$3> is the same as C +=item C<$3> is the same as C =back @@ -615,7 +599,7 @@ L. The status returned by the last pipe close, backtick (C<``>) command, successful call to wait() or waitpid(), or from the system() operator. This is just the 16-bit status word returned by the -wait() system call (or else is made up to look like it). Thus, the +traditional Unix wait() system call (or else is made up to look like it). Thus, the exit value of the subprocess is really (C<<< $? >> 8 >>>), and C<$? & 127> gives which signal, if any, the process died from, and C<$? & 128> reports whether there was a core dump. (Mnemonic: @@ -641,6 +625,17 @@ status; see L for details. Also see L. +=item ${^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() +operator. On POSIX-like systems this value can be decoded with the +WIFEXITED, WEXITSTATUS, WIFSIGNALED, WTERMSIG, WIFSTOPPED, WSTOPSIG +and WIFCONTINUED functions provided by the L module. + +Under VMS this reflects the actual VMS exit status; i.e. it is the same +as $? when the pragma C is in effect. + =item ${^ENCODING} The I to the Encode object that is used to convert @@ -675,7 +670,7 @@ In the above I stands for anything: zero, non-zero, C. A successful system or library call does B set the variable to zero. -If used an a string, yields the corresponding system error string. +If used as a string, yields the corresponding system error string. You can assign a number to C<$!> to set I if, for instance, you want C<"$!"> to return the string for error I, or you want to set the exit value for the die() operator. (Mnemonic: What just @@ -763,7 +758,9 @@ you may use the CPAN module C. The real uid of this process. (Mnemonic: it's the uid you came I, if you're running setuid.) You can change both the real uid and -the effective uid at the same time by using POSIX::setuid(). +the effective uid at the same time by using POSIX::setuid(). Since +changes to $< require a system call, check $! after a change attempt to +detect any possible errors. =item $EFFECTIVE_USER_ID @@ -777,7 +774,8 @@ The effective uid of this process. Example: ($<,$>) = ($>,$<); # swap real and effective uid You can change both the effective uid and the real uid at the same -time by using POSIX::setuid(). +time by using POSIX::setuid(). Changes to $> require a check to $! +to detect any possible errors after an attempted change. (Mnemonic: it's the uid you went I, if you're running setuid.) C<< $< >> and C<< $> >> can be swapped only on machines @@ -800,7 +798,8 @@ set the real gid. So the value given by C<$(> should I be assigned back to C<$(> without being forced numeric, such as by adding zero. You can change both the real gid and the effective gid at the same -time by using POSIX::setgid(). +time by using POSIX::setgid(). Changes to $( require a check to $! +to detect any possible errors after an attempted change. (Mnemonic: parentheses are used to I things. The real gid is the group you I, if you're running setgid.) @@ -826,6 +825,8 @@ list, say C< $) = "5 5" >. You can change both the effective gid and the real gid at the same time by using POSIX::setgid() (use only a single numeric argument). +Changes to $) require a check to $! to detect any possible errors +after an attempted change. (Mnemonic: parentheses are used to I things. The effective gid is the group that's I for you, if you're running setgid.) @@ -847,7 +848,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 and B.) -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>. @@ -865,7 +866,7 @@ 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. @@ -883,8 +884,8 @@ 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), -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 $] @@ -921,6 +922,21 @@ 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 numeric or symbolic values, eg C<$^D = 10> or C<$^D = "st">. +=item ${^RE_DEBUG_FLAGS} + +The current value of the regex debugging flags. Set to 0 for no debug output +even when the re 'debug' module is loaded. See L for details. + +=item ${^RE_TRIE_MAXBUF} + +Controls how certain regex optimisations are applied and how much memory they +utilize. This value by default is 65536 which corresponds to a 512kB temporary +cache. Set this to a higher value to trade memory for speed when matching +large alternations. Set it to a lower value if you want the optimisations to +be as conservative of memory as possible but still occur, and set it to a +negative value to prevent the optimisation and conserve the most memory. +Under normal situations this variable should be of no interest to you. + =item $SYSTEM_FD_MAX =item $^F @@ -979,11 +995,8 @@ 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. =item $INPLACE_EDIT @@ -997,15 +1010,16 @@ inplace editing. (Mnemonic: value of B<-i> switch.) 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 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 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 long name for +this variable. =item $OSNAME @@ -1129,6 +1143,19 @@ 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 +startup. This information is used by perl when it's in +adjust-utf8ness-to-locale mode (as when run with the C<-CL> command-line +switch); see L for more info on this. + =item $PERL_VERSION =item $^V @@ -1139,11 +1166,14 @@ it equals C 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. +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: @@ -1168,12 +1198,25 @@ related to the B<-w> switch.) See also L. The current set of warning checks enabled by the C pragma. See the documentation of C 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 file to +configure the local Perl installation to use "sloppy" stat() by +default. See L for more information about site +customization. + =item $EXECUTABLE_NAME =item $^X The name used to execute the current copy of Perl, from C's -C. +C or (where supported) F. Depending on the host operating system, the value of $^X may be a relative or absolute pathname of the perl program file, or may @@ -1198,7 +1241,7 @@ executable files do not require use of the suffix when invoking a command. To convert the value of $^X to a path name, use the following statements: -# Build up a set of file names (not command names). + # Build up a set of file names (not command names). use Config; $this_perl = $^X; if ($^O ne 'VMS') @@ -1336,24 +1379,11 @@ Be sure not to use a bareword as the name of a signal handler, lest you inadvertently call it. If your system has the sigaction() function then signal handlers are -installed using it. This means you get reliable signal handling. If -your system has the SA_RESTART flag it is used when signals handlers are -installed. This means that system calls for which restarting is supported -continue rather than returning when a signal arrives. If you want your -system calls to be interrupted by signal delivery then do something like -this: - - use POSIX ':signal_h'; - - my $alarm = 0; - sigaction SIGALRM, new POSIX::SigAction sub { $alarm = 1 } - or die "Error setting SIGALRM handler: $!\n"; - -See L. +installed using it. This means you get reliable signal handling. -The delivery policy of signals changed in Perl 5.8.0 from immediate -(also known as "unsafe") to deferred, also known as "safe signals". -See L for more information. +The default delivery policy of signals changed in Perl 5.8.0 from +immediate (also known as "unsafe") to deferred, also known as +"safe signals". See L for more information. 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 @@ -1428,7 +1458,7 @@ C<$@> is set if the string to be C-ed did not compile (this may happen if C or C were imported with bad prototypes), or if Perl code executed during evaluation die()d . In these cases the value of $@ is the compile error, or the argument to C -(which will interpolate C<$!> and C<$?>!). (See also L, +(which will interpolate C<$!> and C<$?>). (See also L, though.) When the eval() expression above is executed, open(), C<< >>,