On 31 Mar, Michael G Schwern wrote:
: On Thu, Mar 31, 2005 at 08:40:35PM -0000, Dan Jacobson wrote:
:> P.S., perltoc looks funny,
:>            Precedence Traps
:>                Precedence, Precedence, Precedence, Precedence, Precedence,
:>                Precedence, Precedence
: 
: Yes, this due to the perltrap man page not using terribly descriptive
: section headers.  That should be fixed.  Good catch.

Inline attached is a patch. 

Steven Schubiger



--- bleadperl/pod/perltrap.pod  Tue Dec 21 13:29:36 2004
+++ perltrap.pod                Fri Apr  1 19:01:44 2005
@@ -418,7 +418,7 @@
 
 =over 4
 
-=item * Discontinuance
+=item * Discontinuance C<_>
 
 Symbols starting with "_" are no longer forced into package main, except
 for C<$_> itself (and C<@_>, etc.).
@@ -432,7 +432,7 @@
     # perl4 prints: $_legacy is 1
     # perl5 prints: $_legacy is
 
-=item * Deprecation
+=item * Deprecation C<::>
 
 Double-colon is now a valid package separator in a variable name.  Thus these
 behave differently in perl4 vs. perl5, because the packages don't exist.
@@ -462,7 +462,7 @@
 
 Also see precedence traps, for parsing C<$:>.
 
-=item * BugFix
+=item * BugFix C<splice()>
 
 The second and third arguments of C<splice()> are now evaluated in scalar
 context (as the Camel says) rather than list context.
@@ -476,7 +476,7 @@
     # perl4 prints: a b
     # perl5 prints: c d e
 
-=item * Discontinuance
+=item * Discontinuance C<goto>
 
 You can't do a C<goto> into a block that is optimized away.  Darn.
 
@@ -490,7 +490,7 @@
     # perl4 prints: Here I is!
     # perl5 errors: Can't "goto" into the middle of a foreach loop
 
-=item * Discontinuance
+=item * Discontinuance whitespace as the name of a variable
 
 It is no longer syntactically legal to use whitespace as the name
 of a variable, or as a delimiter for any kind of quote construct.
@@ -503,7 +503,7 @@
     # perl4 prints: a is foo bar, b is baz
     # perl5 errors: Bareword found where operator expected
 
-=item * Discontinuance
+=item * Discontinuance C<while/if BLOCK BLOCK>
 
 The archaic while/if BLOCK BLOCK syntax is no longer supported.
 
@@ -517,7 +517,7 @@
     # perl4 prints: True!
     # perl5 errors: syntax error at test.pl line 1, near "if {"
 
-=item * BugFix
+=item * BugFix C<**>
 
 The C<**> operator now binds more tightly than unary minus.
 It was documented to work this way before, but didn't.
@@ -527,7 +527,7 @@
     # perl4 prints: 16
     # perl5 prints: -16
 
-=item * Discontinuance
+=item * Discontinuance C<foreach{}>
 
 The meaning of C<foreach{}> has changed slightly when it is iterating over a
 list which is not an array.  This used to assign the list to a
@@ -559,7 +559,7 @@
 happens when you use C<$_> for the loop variable, and call subroutines in
 the loop that don't properly localize C<$_>.)
 
-=item * Discontinuance
+=item * Discontinuance C<split>
 
 C<split> with no arguments now behaves like C<split ' '> (which doesn't
 return an initial null field if $_ starts with whitespace), it used to
@@ -571,7 +571,7 @@
     # perl4 prints: :hi:mom
     # perl5 prints: hi:mom
 
-=item * BugFix
+=item * BugFix B<-e>
 
 Perl 4 would ignore any text which was attached to an B<-e> switch,
 always taking the code snippet from the following arg.  Additionally, it
@@ -588,7 +588,7 @@
     # perl4 prints:
     # perl5 dies: No code specified for -e.
 
-=item * Discontinuance
+=item * Discontinuance return value C<push>
 
 In Perl 4 the return value of C<push> was undocumented, but it was
 actually the last value being pushed onto the target list.  In Perl 5
@@ -601,17 +601,17 @@
     # perl4 prints: second new
     # perl5 prints: 3
 
-=item * Deprecation
+=item * Deprecation error messages
 
 Some error messages will be different.
 
-=item * Discontinuance
+=item * Discontinuance C<split()>
 
 In Perl 4, if in list context the delimiters to the first argument of
 C<split()> were C<??>, the result would be placed in C<@_> as well as
 being returned.   Perl 5 has more respect for your subroutine arguments.
 
-=item * Discontinuance
+=item * Discontinuance bugs
 
 Some bugs may have been inadvertently removed.  :-)
 
@@ -623,7 +623,7 @@
 
 =over 4
 
-=item * Parsing
+=item * Parsing space between . and =
 
 Note the space between . and =
 
@@ -633,7 +633,7 @@
     # perl4 prints: more string
     # perl5 prints: syntax error at - line 1, near ". ="
 
-=item * Parsing
+=item * Parsing perl 5
 
 Better parsing in perl 5
 
@@ -644,7 +644,7 @@
     # perl4 prints: hello, world
     # perl5 prints: syntax error
 
-=item * Parsing
+=item * Parsing function
 
 "if it looks like a function, it is a function" rule.
 
@@ -654,7 +654,7 @@
     # perl4 prints: is zero
     # perl5 warns: "Useless use of a constant in void context" if using -w
 
-=item * Parsing
+=item * Parsing C<$#array>
 
 String interpolation of the C<$#array> construct differs when braces
 are to used around the name.
@@ -671,7 +671,7 @@
     # perl4 prints: {a}
     # perl5 prints: 2
 
-=item * Parsing
+=item * Parsing C<map>, C<grep>
 
 When perl sees C<map {> (or C<grep {>), it has to guess whether the C<{>
 starts a BLOCK or a hash reference. If it guesses wrong, it will report
@@ -690,7 +690,7 @@
 
 =over 5
 
-=item * Numerical
+=item * Numerical formatted output and significant digits
 
 Formatted output and significant digits.  In general, Perl 5
 tries to be more precise.  For example, on a Solaris Sparc:
@@ -711,7 +711,7 @@
 Your results may vary, since your floating point formatting routines
 and even floating point format may be slightly different.
 
-=item * Numerical
+=item * Numerical auto-increment operator
 
 This specific item has been deleted.  It demonstrated how the auto-increment
 operator would not catch when a number went over the signed int limit.  Fixed
@@ -720,7 +720,7 @@
 
    use Math::BigInt;
 
-=item * Numerical
+=item * Numerical return values from numeric equality tests
 
 Assignment of return values from numeric equality tests
 does not work in perl5 when the test evaluates to false (0).
@@ -768,7 +768,7 @@
 
 =over 5
 
-=item * (Arrays)
+=item * (Arrays) negative array subscripts
 
 Negative array subscripts now count from the end of the array.
 
@@ -778,7 +778,7 @@
     # perl4 prints: The third element of the array is 4 also expressed as
     # perl5 prints: The third element of the array is 4 also expressed as 4
 
-=item * (Arrays)
+=item * (Arrays) setting C<$#array> lower
 
 Setting C<$#array> lower now discards array elements, and makes them
 impossible to recover.
@@ -793,7 +793,7 @@
     # perl4 prints: Before: abcde, After: ab, Recovered: abcd
     # perl5 prints: Before: abcde, After: ab, Recovered: ab
 
-=item * (Hashes)
+=item * (Hashes) defined before use
 
 Hashes get defined before use
 
@@ -808,7 +808,7 @@
 Perl will now generate a warning when it sees defined(@a) and
 defined(%h).
 
-=item * (Globs)
+=item * (Globs) assignment from localized variable to variable
 
 glob assignment from variable to variable will fail if the assigned
 variable is localized subsequent to the assignment
@@ -821,7 +821,7 @@
     # perl4 prints: This is Perl 4
     # perl5 prints:
 
-=item * (Globs)
+=item * (Globs) assigning C<undef>
 
 Assigning C<undef> to a glob has no effect in Perl 5.   In Perl 4
 it undefines the associated scalar (but may have other side effects
@@ -839,7 +839,7 @@
     # perl5 prints: bar
     # perl5 warns: "Undefined value assigned to typeglob" if using -w
 
-=item * (Scalar String)
+=item * (Scalar String) unary negation
 
 Changes in unary negation (of strings)
 This change effects both the return value and what it
@@ -853,7 +853,7 @@
     # perl4 prints: aab : -0 : 1
     # perl5 prints: aab : -aab : aac
 
-=item * (Constants)
+=item * (Constants) modify constants
 
 perl 4 lets you modify constants:
 
@@ -879,7 +879,7 @@
     # Modification of a read-only value attempted at foo.pl line 12.
     # before: a
 
-=item * (Scalars)
+=item * (Scalars) defined $var
 
 The behavior is slightly different for:
 
@@ -931,7 +931,7 @@
 
 =over 5
 
-=item * (list context)
+=item * (list context) formats evaluated in list context
 
 The elements of argument lists for formats are now evaluated in list
 context.  This means you can interpolate list values now.
@@ -946,7 +946,7 @@
     # perl4 errors:  Please use commas to separate fields in file
     # perl5 prints: foo     bar      baz
 
-=item * (scalar context)
+=item * (scalar context) C<caller> return value
 
 The C<caller()> function now returns a false value in a scalar context
 if there is no caller.  This lets library files determine if they're
@@ -957,7 +957,7 @@
     # perl4 errors: There is no caller
     # perl5 prints: Got a 0
 
-=item * (scalar context)
+=item * (scalar context) comma operator
 
 The comma operator in a scalar context is now guaranteed to give a
 scalar context to its arguments.
@@ -969,7 +969,7 @@
     # Perl4 prints:  x = c   # Thinks list context interpolates list
     # Perl5 prints:  x = 3   # Knows scalar uses length of list
 
-=item * (list, builtin)
+=item * (list, builtin) C<sprintf()> prototype
 
 C<sprintf()> is prototyped as ($;@), so its first argument is given scalar
 context. Thus, if passed an array, it will probably not do what you want,
@@ -1002,7 +1002,7 @@
 
 =over 5
 
-=item * Precedence
+=item * Precedence LHS vs. RHS
 
 LHS vs. RHS of any assignment operator.  LHS is evaluated first
 in perl4, second in perl5; this can affect the relationship
@@ -1015,7 +1015,7 @@
     # perl4 prints: left
     # perl5 prints: right
 
-=item * Precedence
+=item * Precedence semantic errors
 
 These are now semantic errors because of precedence:
 
@@ -1029,7 +1029,7 @@
     # perl4 prints: n is 3, m is 6
     # perl5 errors and fails to compile
 
-=item * Precedence
+=item * Precedence assignment operators
 
 The precedence of assignment operators is now the same as the precedence
 of assignment.  Perl 4 mistakenly gave them the precedence of the associated
@@ -1051,7 +1051,7 @@
 
 now works as a C programmer would expect.
 
-=item * Precedence
+=item * Precedence C<open>
 
     open FOO || die;
 
@@ -1063,7 +1063,7 @@
     # perl4 opens or dies
     # perl5 opens FOO, dying only if 'FOO' is false, i.e. never
 
-=item * Precedence
+=item * Precedence C<$:>
 
 perl4 gives the special variable, C<$:> precedence, where perl5
 treats C<$::> as main C<package>
@@ -1073,7 +1073,7 @@
     # perl 4 prints: -:a
     # perl 5 prints: x
 
-=item * Precedence
+=item * Precedence file test operators
 
 perl4 had buggy precedence for the file test operators vis-a-vis
 the assignment operators.  Thus, although the precedence table
@@ -1086,7 +1086,7 @@
     # perl4 prints: no output
     # perl5 prints: Can't modify -e in concatenation
 
-=item * Precedence
+=item * Precedence C<keys>, C<each>, C<values>
 
 In perl4, keys(), each() and values() were special high-precedence operators
 that operated on a single hash, but in perl5, they are regular named unary
@@ -1111,7 +1111,7 @@
 
 =over 5
 
-=item * Regular Expression
+=item * Regular Expression C<s'$lhs'$rhs'>
 
 C<s'$lhs'$rhs'> now does no interpolation on either side.  It used to
 interpolate $lhs but not $rhs.  (And still does not match a literal
@@ -1125,7 +1125,7 @@
     # perl4 prints: $b 2 $a $b
     # perl5 prints: 1 2 $a $b
 
-=item * Regular Expression
+=item * Regular Expression C<m//g>
 
 C<m//g> now attaches its state to the searched string rather than the
 regular expression.  (Once the scope of a block is left for the sub, the
@@ -1140,7 +1140,7 @@
     # perl4 prints: Got blah Got blah Got blah Got blah
     # perl5 prints: infinite loop blah...
 
-=item * Regular Expression
+=item * Regular Expression C<m//o>
 
 Currently, if you use the C<m//o> qualifier on a regular expression
 within an anonymous sub, I<all> closures generated from that anonymous
@@ -1166,7 +1166,7 @@
 $left and $right as they were the I<first> time that build_match()
 was called, not as they are in the current call.
 
-=item * Regular Expression
+=item * Regular Expression C<$+>
 
 If no parentheses are used in a match, Perl4 sets C<$+> to
 the whole match, just like C<$&>. Perl5 does not.
@@ -1177,7 +1177,7 @@
     # perl4 prints: bcde
     # perl5 prints:
 
-=item * Regular Expression
+=item * Regular Expression substitution returns null string
 
 substitution now returns the null string if it fails
 
@@ -1190,7 +1190,7 @@
 
 Also see L<Numerical Traps> for another example of this new feature.
 
-=item * Regular Expression
+=item * Regular Expression C<s`lhs`rhs`>
 
 C<s`lhs`rhs`> (using backticks) is now a normal substitution, with no
 backtick expansion
@@ -1202,7 +1202,7 @@
     # perl4 prints: <the local hostname>
     # perl5 prints: hostname
 
-=item * Regular Expression
+=item * Regular Expression stricter parsing of variables
 
 Stricter parsing of variables used in regular expressions
 
@@ -1224,7 +1224,7 @@
     # perl4 prints: foo
     # perl5 prints: foobar
 
-=item * Regular Expression
+=item * Regular Expression C<m?x?>
 
 Under perl5, C<m?x?> matches only once, like C<?x?>. Under perl4, it matched
 repeatedly, like C</x/> or C<m!x!>.
@@ -1243,7 +1243,7 @@
     # perl4 prints: perl4
     # perl5 prints: perl5
 
-=item * Regular Expression
+=item * Regular Expression reset match variables
 
 Unlike in Ruby, failed matches in Perl do not reset the match variables
 ($1, $2, ..., C<$`>, ...).
@@ -1299,7 +1299,7 @@
 
 =over 5
 
-=item * (SysV)
+=item * (SysV) reset signal handler
 
 Under HPUX, and some other SysV OSes, one had to reset any signal handler,
 within  the signal handler function, each time a signal was handled with
@@ -1326,7 +1326,7 @@
     # perl4 (HPUX) prints: Got INT...
     # perl5 (HPUX) prints: Got INT... Got INT...
 
-=item * (SysV)
+=item * (SysV) C<seek()>
 
 Under SysV OSes, C<seek()> on a file opened to append C<<< >> >>> now does
 the right thing w.r.t. the fopen() manpage. e.g., - When a file is opened
@@ -1356,7 +1356,7 @@
 
 =over 5
 
-=item * Interpolation
+=item * Interpolation @
 
 @ now always interpolates an array in double-quotish strings.
 
@@ -1366,7 +1366,7 @@
     # perl < 5.6.1, error : In string, @somewhere now must be written as 
[EMAIL PROTECTED]
     # perl >= 5.6.1, warning : Possible unintended interpolation of @somewhere 
in string
 
-=item * Interpolation
+=item * Interpolation strings ended with an unescaped $
 
 Double-quoted strings may no longer end with an unescaped $.
 
@@ -1378,7 +1378,7 @@
 
 Note: perl5 DOES NOT error on the terminating @ in $bar
 
-=item * Interpolation
+=item * Interpolation arbitrary expressions
 
 Perl now sometimes evaluates arbitrary expressions inside braces that occur
 within double quotes (usually when the opening brace is preceded by C<$>
@@ -1395,7 +1395,7 @@
 
 Note that you can C<use strict;> to ward off such trappiness under perl5.
 
-=item * Interpolation
+=item * Interpolation C<$$x>
 
 The construct "this is $$x" used to interpolate the pid at that point, but
 now tries to dereference $x.  C<$$> by itself still works fine, however.
@@ -1407,7 +1407,7 @@
     # perl4 prints: this is XXXx   (XXX is the current pid)
     # perl5 prints: this is a reference
 
-=item * Interpolation
+=item * Interpolation creation of hashes on the fly with C<eval "EXPR">
 
 Creation of hashes on the fly with C<eval "EXPR"> now requires either both
 C<$>'s to be protected in the specification of the hash name, or both curlies
@@ -1448,7 +1448,7 @@
     # and is compatible for both versions
 
 
-=item * Interpolation
+=item * Interpolation bugs in earlier perl versions
 
 perl4 programs which unconsciously rely on the bugs in earlier perl versions.
 
@@ -1457,7 +1457,7 @@
     # perl4 prints: This is not perl5
     # perl5 prints: This is perl5
 
-=item * Interpolation
+=item * Interpolation array and hash brackets
 
 You also have to be careful about array and hash brackets during
 interpolation.
@@ -1479,9 +1479,9 @@
     print "$foo\[";
     print "$foo\{";
 
-=item * Interpolation
+=item * Interpolation C<\$$foo{bar}>
 
-Similarly, watch out for:
+Similarly, watch out for: C<\$$foo{bar}>
 
     $foo = "baz";
     print "\$$foo{bar}\n";
@@ -1493,7 +1493,7 @@
 happy just to expand $foo to "baz" by itself.  Watch out for this
 especially in C<eval>'s.
 
-=item * Interpolation
+=item * Interpolation C<qq()>
 
 C<qq()> string passed to C<eval>
 
@@ -1514,7 +1514,7 @@
 
 =over 5
 
-=item * DBM
+=item * DBM same dbm/ndbm as the default for C<dbmopen()>
 
 Existing dbm databases created under perl4 (or any other dbm/ndbm tool)
 may cause the same script, run under perl5, to fail.  The build of perl5
@@ -1528,7 +1528,7 @@
     # perl5 prints: ok (IFF linked with -ldbm or -lndbm)
 
 
-=item * DBM
+=item * DBM exceeding the limit on the key/value size
 
 Existing dbm databases created under perl4 (or any other dbm/ndbm tool)
 may cause the same script, run under perl5, to fail.  The error generated

Reply via email to