1- Incompatibilities
2- -----------------
3- s'$lhs'$rhs' now does no interpolation on either side. It used to
4- interplolate $lhs but not $rhs.
5-
6- The second and third arguments of splice are now evaluated in scalar
7- context (like the book says) rather than list context.
8-
9- Saying "shift @foo + 20" is now a semantic error because of precedence.
10-
11- "open FOO || die" is now incorrect. You need parens around the filehandle.
12-
13- The elements of argument lists for formats are now evaluated in list
14- context. This means you can interpolate list values now.
15-
16- You can't do a goto into a block that is optimized away. Darn.
17-
18- It is no longer syntactically legal to use whitespace as the name
19- of a variable.
20-
21- Some error messages will be different.
22-
23- The caller function now a false value in a scalar context if there is
24- no caller. This lets library files determine if they're being required.
25-
26- m//g now attaches its state to the searched string rather than the
27- regular expression.
28-
291New things
302----------
313 The -w switch is much more informative.
324
33- References. See t/op/ref.t for examples.
5+ References. See t/op/ref.t for examples. All entities in Perl 5 are
6+ reference counted so that it knows when each item should be destroyed.
347
358 Objects. See t/op/ref.t for examples.
369
@@ -42,7 +15,9 @@ New things
4215 meaning the parens are optional. Even subroutines may be called as
4316 list operators if they've already been declared.
4417
45- More embeddible. See main.c and embed_h.SH.
18+ More embeddible. See main.c and embed_h.SH. Multiple interpreters
19+ in the same process are supported (though not with interleaved
20+ execution yet).
4621
4722 The interpreter is now flattened out. Compare Perl 4's eval.c with
4823 the perl 5's pp.c. Compare Perl 4's 900 line interpreter loop in cmd.c
@@ -73,3 +48,51 @@ New things
7348 variables.
7449
7550 Saying "package;" requires explicit package name on global symbols.
51+
52+ The preferred package delimiter is now :: rather than '.
53+
54+ tie/untie are now preferred to dbmopen/dbmclose. Multiple DBM
55+ implementations are allowed in the same executable, so you can
56+ write scripts to interchange data among different formats.
57+
58+ New "and" and "or" operators work just like && and || but with
59+ a precedence lower than comma, so they work better with list operators.
60+
61+ New functions include: abs(), chr(), uc(), ucfirst(), lc(), lcfirst()
62+
63+ Incompatibilities
64+ -----------------
65+ @ now always interpolates an array in double-quotish strings. Some programs
66+ may now need to use backslash to protect any @ that shouldn't interpolate.
67+
68+ s'$lhs'$rhs' now does no interpolation on either side. It used to
69+ interplolate $lhs but not $rhs.
70+
71+ The second and third arguments of splice are now evaluated in scalar
72+ context (like the book says) rather than list context.
73+
74+ Saying "shift @foo + 20" is now a semantic error because of precedence.
75+
76+ "open FOO || die" is now incorrect. You need parens around the filehandle.
77+
78+ The elements of argument lists for formats are now evaluated in list
79+ context. This means you can interpolate list values now.
80+
81+ You can't do a goto into a block that is optimized away. Darn.
82+
83+ It is no longer syntactically legal to use whitespace as the name
84+ of a variable.
85+
86+ Some error messages will be different.
87+
88+ The caller function now returns a false value in a scalar context if there
89+ is no caller. This lets library files determine if they're being required.
90+
91+ m//g now attaches its state to the searched string rather than the
92+ regular expression.
93+
94+ "reverse" is no longer allowed as the name of a sort subroutine.
95+
96+ taintperl is no longer a separate executable. There is now a -T
97+ switch to turn on tainting when it isn't turned on automatically.
98+
0 commit comments