This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
YA resync with mainstem, including VMS patches from others
[perl5.git] / pod / perltrap.pod
index 50987cb..c59ecc4 100644 (file)
@@ -69,7 +69,7 @@ executed.)  See L<perlvar>.
 
 =item *
 
-$E<lt>I<digit>E<gt> does not refer to fields--it refers to substrings matched
+$<I<digit>> does not refer to fields--it refers to substrings matched
 by the last match pattern.
 
 =item *
@@ -103,7 +103,7 @@ basically incompatible with C.)
 The concatenation operator is ".", not the null string.  (Using the
 null string would render C</pat/ /pat/> unparsable, because the third slash
 would be interpreted as a division operator--the tokenizer is in fact
-slightly context sensitive for operators like "/", "?", and "E<gt>".
+slightly context sensitive for operators like "/", "?", and ">".
 And in fact, "." itself can be the beginning of a number.)
 
 =item *
@@ -172,12 +172,6 @@ Variables begin with "$", "@" or "%" in Perl.
 
 =item *
 
-C<printf()> does not implement the "*" format for interpolating
-field widths, but it's trivial to use interpolation of double-quoted
-strings to achieve the same effect.
-
-=item *
-
 Comments begin with "#", not "/*".
 
 =item *
@@ -295,7 +289,7 @@ you might expect to do not.
 
 =item *
 
-The E<lt>FHE<gt> construct is not the name of the filehandle, it is a readline
+The <FH> construct is not the name of the filehandle, it is a readline
 operation on that handle.  The data read is assigned to $_ only if the
 file read is the sole condition in a while loop:
 
@@ -392,8 +386,9 @@ Everything else.
 =back
 
 If you find an example of a conversion trap that is not listed here,
-please submit it to Bill Middleton <F<wjm@best.com>> for inclusion.
-Also note that at least some of these can be caught with B<-w>.
+please submit it to <F<perlbug@perl.org>> for inclusion.
+Also note that at least some of these can be caught with the
+C<use warnings> pragma or the B<-w> switch.
 
 =head2 Discontinuance, Deprecation, and BugFix traps
 
@@ -424,7 +419,7 @@ behave differently in perl4 vs. perl5, because the packages don't exist.
     $a=1;$b=2;$c=3;$var=4;
     print "$a::$b::$c ";
     print "$var::abc::xyz\n";
+
     # perl4 prints: 1::2::3 4::abc::xyz
     # perl5 prints: 3
 
@@ -585,30 +580,18 @@ number of elements in the resulting list.
     # perl4 prints: second new
     # perl5 prints: 3
 
-=item * Discontinuance
-
-In Perl 4 (and versions of Perl 5 before 5.004), C<'\r'> characters in
-Perl code were silently allowed, although they could cause (mysterious!)
-failures in certain constructs, particularly here documents.  Now,
-C<'\r'> characters cause an immediate fatal error.  (Note: In this
-example, the notation B<\015> represents the incorrect line
-ending. Depending upon your text viewer, it will look different.)
-
-    print "foo";\015
-    print "bar";
-
-    # perl4     prints: foobar
-    # perl5.003 prints: foobar
-    # perl5.004 dies: Illegal character \015 (carriage return)
-
-See L<perldiag> for full details.
-
 =item * Deprecation
 
 Some error messages will be different.
 
 =item * Discontinuance
 
+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
+
 Some bugs may have been inadvertently removed.  :-)
 
 =back
@@ -715,6 +698,30 @@ Logical tests now return an null, instead of 0
 Also see L<"General Regular Expression Traps using s///, etc.">
 for another example of this new feature...
 
+=item * Bitwise string ops
+
+When bitwise operators which can operate upon either numbers or
+strings (C<& | ^ ~>) are given only strings as arguments, perl4 would
+treat the operands as bitstrings so long as the program contained a call
+to the C<vec()> function. perl5 treats the string operands as bitstrings.
+(See L<perlop/Bitwise String Operators> for more details.)
+
+    $fred = "10";
+    $barney = "12";
+    $betty = $fred & $barney;
+    print "$betty\n";
+    # Uncomment the next line to change perl4's behavior
+    # ($dummy) = vec("dummy", 0, 0);
+
+    # Perl4 prints:
+    8
+
+    # Perl5 prints:
+    10
+
+    # If vec() is used anywhere in the program, both print:
+    10
+
 =back
 
 =head2 General data type traps
@@ -1260,7 +1267,7 @@ Since version 5.002, Perl uses sigaction() under SysV.
 
 =item * (SysV)
 
-Under SysV OSes, C<seek()> on a file opened to append C<E<gt>E<gt>> now does
+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
 for append,  it  is  impossible to overwrite information already in
 the file.
@@ -1295,7 +1302,8 @@ within certain expressions, statements, contexts, or whatever.
     print "To: someone@somewhere.com\n";
 
     # perl4 prints: To:someone@somewhere.com
-    # perl5 errors : In string, @somewhere now must be written as \@somewhere
+    # perl < 5.6.1, error : In string, @somewhere now must be written as \@somewhere
+    # perl >= 5.6.1, warning : Possible unintended interpolation of @somewhere in string
 
 =item * Interpolation