GCC + Threads on Win32 - best gcc results yet
[p5sagit/p5-mst-13.2.git] / pod / perlop.pod
index d853865..17728df 100644 (file)
@@ -392,7 +392,7 @@ As a scalar operator:
 As a list operator:
 
     for (101 .. 200) { print; }        # print $_ 100 times
-    @foo = @foo[$[ .. $#foo];  # an expensive no-op
+    @foo = @foo[0 .. $#foo];   # an expensive no-op
     @foo = @foo[$#foo-4 .. $#foo];     # slice last 5 items
 
 The range operator (in a list context) makes use of the magical
@@ -567,6 +567,15 @@ the same character fore and aft, but the 4 sorts of brackets
                 s{}{}   Substitution      yes
                tr{}{}   Translation       no
 
+Note that there can be whitespace between the operator and the quoting
+characters, except when C<#> is being used as the quoting character.
+C<q#foo#> is parsed as being the string C<foo>, which C<q #foo#> is the
+operator C<q> followed by a comment. Its argument will be taken from the
+next line. This allows you to write:
+
+    s {foo}  # Replace foo
+      {bar}  # with bar.
+
 For constructs that do interpolation, variables beginning with "C<$>" or "C<@>"
 are interpolated, as are the following sequences:
 
@@ -619,9 +628,9 @@ patterns local to the current package are reset.
 This usage is vaguely deprecated, and may be removed in some future
 version of Perl.
 
-=item m/PATTERN/gimosx
+=item m/PATTERN/cgimosx
 
-=item /PATTERN/gimosx
+=item /PATTERN/cgimosx
 
 Searches a string for a pattern match, and in a scalar context returns
 true (1) or false ('').  If no string is specified via the C<=~> or
@@ -634,6 +643,7 @@ when C<use locale> is in effect.
 
 Options are:
 
+    c  Do not reset search position on a failed match when /g is in effect.
     g  Match globally, i.e., find all occurrences.
     i  Do case-insensitive pattern matching.
     m  Treat string as multiple lines.
@@ -702,7 +712,7 @@ each time it matches, and FALSE when it eventually runs out of matches.
 the search at that point.  You can actually find the current match
 position of a string or set it using the pos() function; see
 L<perlfunc/pos>.)  A failed match normally resets the search position to
-the beginning of the string, but you can avoid that by adding the "c"
+the beginning of the string, but you can avoid that by adding the C</c>
 modifier (e.g. C<m//gc>).  Modifying the target string also resets the
 search position.
 
@@ -808,6 +818,24 @@ with $/ or $INPUT_RECORD_SEPARATOR).
 
     $today = qx{ date };
 
+Note that how the string gets evaluated is entirely subject to the
+command interpreter on your system.  On most platforms, you will have
+to protect shell metacharacters if you want them treated literally.
+On some platforms (notably DOS-like ones), the shell may not be
+capable of dealing with multiline commands, so putting newlines in
+the string may not get you what you want.  You may be able to evaluate
+multiple commands in a single line by separating them with the command
+separator character, if your shell supports that (e.g. C<;> on many Unix
+shells; C<&> on the Windows NT C<cmd> shell).
+
+Beware that some command shells may place restrictions on the length
+of the command line.  You must ensure your strings don't exceed this
+limit after any necessary interpolations.  See the platform-specific
+release notes for more details about your particular environment.
+
+Also realize that using this operator frequently leads to unportable
+programs.
+
 See L<"I/O Operators"> for more discussion.
 
 =item qw/STRING/
@@ -1058,7 +1086,7 @@ of filenames.  The loop
 
 is equivalent to the following Perl-like pseudo code:
 
-    unshift(@ARGV, '-') if $#ARGV < $[;
+    unshift(@ARGV, '-') unless @ARGV;
     while ($ARGV = shift) {
        open(ARGV, $ARGV);
        while (<ARGV>) {