X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperlvar.pod;h=fab45cb0b148d111d2978a6426a526a3a30525a4;hb=38cabd2daffcdb193c3134c3eb36b7ceaa4ca051;hp=baa0d829fce980fd7ead4cc30866e2768a5e1078;hpb=c80e248047022d726c15184b066c0b4eff184abe;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perlvar.pod b/pod/perlvar.pod index baa0d82..fab45cb 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 @@ -471,8 +475,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 @@ -526,9 +528,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<@+>. @@ -615,7 +617,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 +643,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 +688,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 +776,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 +792,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 +816,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 +843,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.) @@ -921,6 +940,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 @@ -1078,6 +1112,10 @@ Provide informative "file" names for evals based on the place they were compiled Provide informative names to anonymous subroutines based on the place they were compiled. +=item 0x400 + +Debug assertion subroutines enter/exit. + =back Some bits may be relevant at compile-time only, some at @@ -1194,7 +1232,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') @@ -1332,24 +1370,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 @@ -1424,7 +1449,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<< >>,