perl571delta.
[p5sagit/p5-mst-13.2.git] / pod / perlvar.pod
index 1b394b3..fc3a746 100644 (file)
@@ -99,7 +99,7 @@ The implicit iterator variable in the grep() and map() functions.
 
 =item *
 
-The default place to put an input record when a C<E<lt>FHE<gt>>
+The default place to put an input record when a C<< <FH> >>
 operation's result is tested by itself as the sole criterion of a C<while>
 test.  Outside a C<while> test, this will not happen.
 
@@ -111,7 +111,7 @@ test.  Outside a C<while> test, this will not happen.
 
 =over 8
 
-=item $E<lt>I<digits>E<gt>
+=item $<I<digits>>
 
 Contains the subpattern from the corresponding set of capturing
 parentheses from the last pattern match, not counting patterns
@@ -174,6 +174,8 @@ example:
 (Mnemonic: be positive and forward looking.)
 This variable is read-only and dynamically scoped to the current BLOCK.
 
+=item @LAST_MATCH_END
+
 =item @+
 
 This array holds the offsets of the ends of the last successful
@@ -191,17 +193,22 @@ examples given for the C<@-> variable.
 
 =item $*
 
-Set to 1 to do multi-line matching within a string, 0 to tell Perl
-that it can assume that strings contain a single line, for the purpose
-of optimizing pattern matches.  Pattern matches on strings containing
-multiple newlines can produce confusing results when C<$*> is 0.  Default
-is 0.  (Mnemonic: * matches multiple things.)  This variable
-influences the interpretation of only C<^> and C<$>.  A literal newline can
-be searched for even when C<$* == 0>.
+Set to a non-zero integer value to do multi-line matching within a
+string, 0 (or undefined) to tell Perl that it can assume that strings
+contain a single line, for the purpose of optimizing pattern matches.
+Pattern matches on strings containing multiple newlines can produce
+confusing results when C<$*> is 0 or undefined. Default is undefined.
+(Mnemonic: * matches multiple things.) This variable influences the
+interpretation of only C<^> and C<$>. A literal newline can be searched
+for even when C<$* == 0>.
 
 Use of C<$*> is deprecated in modern Perl, supplanted by 
 the C</s> and C</m> modifiers on pattern matching.
 
+Assigning a non-numerical value to C<$*> triggers a warning (and makes
+C<$*> act if C<$* == 0>), while assigning a numerical value to C<$*>
+makes that an implicit C<int> is applied on the value.
+
 =item input_line_number HANDLE EXPR
 
 =item $INPUT_LINE_NUMBER
@@ -215,7 +222,7 @@ you just read() (or called a C<seek> or C<tell> on).  The value
 may be different from the actual physical line number in the file,
 depending on what notion of "line" is in effect--see C<$/> on how
 to change that.  An explicit close on a filehandle resets the line
-number.  Because C<E<lt>E<gt>> never does an explicit close, line
+number.  Because C<< <> >> never does an explicit close, line
 numbers increase across ARGV files (but see examples in L<perlfunc/eof>).
 Consider this variable read-only: setting it does not reposition
 the seek pointer; you'll have to do that on your own.  Localizing C<$.>
@@ -412,6 +419,8 @@ channel.
 Used with formats.
 (Mnemonic: lines_on_page - lines_printed.)
 
+=item @LAST_MATCH_START
+
 =item @-
 
 $-[0] is the offset of the start of the last successful match.
@@ -421,7 +430,7 @@ I<n>-th subpattern, or undef if the subpattern did not match.
 Thus after a match against $_, $& coincides with C<substr $_, $-[0],
 $+[0] - $-[0]>.  Similarly, C<$>I<n> coincides with C<substr $_, $-[>I<n>C<],
 $+[>I<n>C<] - $-[>I<n>C<]> if C<$-[>I<n>C<]> is defined, and $+ coincides with
-C<substr $_, $-[$#-], $+[$#-]>.  One can use C<$#E<45>> to find the last
+C<substr $_, $-[$#-], $+[$#-]>.  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<@+>.
@@ -439,17 +448,17 @@ After a match against some variable $var:
 
 =over 5
 
-=item C<$`> is the same as C<substr($var, 0, $-[0]>)
+=item C<$`> is the same as C<substr($var, 0, $-[0])>
 
-=item C<$&> is the same as C<substr($var, $-[0], $+[0] - $-[0]>) 
+=item C<$&> is the same as C<substr($var, $-[0], $+[0] - $-[0])>
 
-=item C<$'> is the same as C<substr($var, $+[0]>)
+=item C<$'> is the same as C<substr($var, $+[0])>
 
 =item C<$1> is the same as C<substr($var, $-[1], $+[1] - $-[1])>  
 
 =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
 
@@ -511,7 +520,7 @@ 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
-exit value of the subprocess is really (C<$? E<gt>E<gt> 8>), and
+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:
 similar to B<sh> and B<ksh>.)
@@ -615,7 +624,8 @@ across fork() calls.  (Mnemonic: same as shells.)
 =item $<
 
 The real uid of this process.  (Mnemonic: it's the uid you came I<from>,
-if you're running setuid.)
+if you're running setuid.)  You can change both the real uid and
+the effective uid at the same time by using POSIX::setuid().
 
 =item $EFFECTIVE_USER_ID
 
@@ -628,8 +638,11 @@ The effective uid of this process.  Example:
     $< = $>;           # set real to effective uid
     ($<,$>) = ($>,$<); # swap real and effective uid
 
+You can change both the effective uid and the real uid at the same
+time by using POSIX::setuid().
+
 (Mnemonic: it's the uid you went I<to>, if you're running setuid.)
-C<$E<lt>> and C<$E<gt>> can be swapped only on machines
+C<< $< >> and C<< $> >> can be swapped only on machines
 supporting setreuid().
 
 =item $REAL_GROUP_ID
@@ -648,6 +661,9 @@ 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.
 
+You can change both the real gid and the effective gid at the same
+time by using POSIX::setgid().
+
 (Mnemonic: parentheses are used to I<group> things.  The real gid is the
 group you I<left>, if you're running setgid.)
 
@@ -670,10 +686,13 @@ empty list for setgroups(), just repeat the new effective gid; that is,
 to force an effective gid of 5 and an effectively empty setgroups()
 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).
+
 (Mnemonic: parentheses are used to I<group> things.  The effective gid
 is the group that's I<right> for you, if you're running setgid.)
 
-C<$E<lt>>, C<$E<gt>>, C<$(> and C<$)> can be set only on
+C<< $< >>, C<< $> >>, C<$(> and C<$)> can be set only on
 machines that support the corresponding I<set[re][ug]id()> routine.  C<$(>
 and C<$)> can be swapped only on machines supporting setregid().
 
@@ -687,6 +706,11 @@ program sees.  This 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 for BSD users: setting C<$0> does not completely remove "perl"
+from the ps(1) output.  For example, setting C<$0> to C<"foobar"> will
+result in C<"perl: foobar (perl)">.  This is an operating system
+feature.
+
 =item $[
 
 The index of the first element in an array, and of the first character
@@ -814,10 +838,10 @@ Then
 
     $^M = 'a' x (1 << 16);
 
-would allocate a 64K buffer for use when in emergency.  See the
+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> long name for this variable.
+feature, there is no L<English|English> long name for this variable.
 
 =item $OSNAME
 
@@ -920,7 +944,7 @@ 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 "No \"our\" declarations!\n" if $^V and $^V lt v5.6.0;
 
 See the documentation of C<use VERSION> and C<require VERSION>
 for a convenient way to fail if the running Perl interpreter is too old.
@@ -964,7 +988,7 @@ This may not be a full pathname, nor even necessarily in your path.
 
 =item $ARGV
 
-contains the name of the current file when reading from E<lt>E<gt>.
+contains the name of the current file when reading from <>.
 
 =item @ARGV
 
@@ -1134,7 +1158,7 @@ the value of $@ is the compile error, or the argument to C<die>
 (which will interpolate C<$!> and C<$?>!).  (See also L<Fatal>,
 though.)
 
-When the eval() expression above is executed, open(), C<<PIPEE<gt>>,
+When the eval() expression above is executed, open(), C<< <PIPE> >>,
 and C<close> are translated to calls in the C run-time library and
 thence to the operating system kernel.  C<$!> is set to the C library's
 C<errno> if one of these calls fails.