summaryrefslogtreecommitdiff
path: root/Changes
diff options
context:
space:
mode:
authorLarry Wall <larry@netlabs.com>1993-10-10 00:00:00 +0000
committerLarry Wall <larry@netlabs.com>1993-10-10 00:00:00 +0000
commit93a17b20b6d176db3f04f51a63b0a781e5ffd11c (patch)
tree764149b1d480d5236d4d62b3228bd57f53a71042 /Changes
parent79072805bf63abe5b5978b5928ab00d360ea3e7f (diff)
downloadperl-93a17b20b6d176db3f04f51a63b0a781e5ffd11c.tar.gz
perl 5.0 alpha 3
[editor's note: the sparc executables have not been included, and emacs backup files have been removed]
Diffstat (limited to 'Changes')
-rw-r--r--Changes65
1 files changed, 61 insertions, 4 deletions
diff --git a/Changes b/Changes
index 55bedde1fc..b8fb52f99e 100644
--- a/Changes
+++ b/Changes
@@ -1,18 +1,75 @@
-
+Incompatibilities
+-----------------
s'$lhs'$rhs' now does no interpolation on either side. It used to
interplolate $lhs but not $rhs.
The second and third arguments of splice are now evaluated in scalar
context (like the book says) rather than list context.
- Saying shift @foo + 20 is now a semantic error.
+ Saying "shift @foo + 20" is now a semantic error because of precedence.
+
+ "open FOO || die" is now incorrect. You need parens around the filehandle.
The elements of argument lists for formats are now evaluated in list
- context.
+ context. This means you can interpolate list values now.
- You can't do a goto into a block that is optimized away.
+ You can't do a goto into a block that is optimized away. Darn.
It is no longer syntactically legal to use whitespace as the name
of a variable.
Some error messages will be different.
+
+ The caller function now a false value in a scalar context if there is
+ no caller. This lets library files determine if they're being required.
+
+ m//g now attaches its state to the searched string rather than the
+ regular expression.
+
+New things
+----------
+ The -w switch is much more informative.
+
+ References. See t/op/ref.t for examples.
+
+ Objects. See t/op/ref.t for examples.
+
+ => is now a synonym for comma. This is useful as documentation for
+ arguments that come in pairs, such as initializers for associative arrays,
+ or named arguments to a subroutine.
+
+ All functions have been turned into list operators or unary operators,
+ meaning the parens are optional. Even subroutines may be called as
+ list operators if they've already been declared.
+
+ More embeddible. See main.c and embed_h.SH.
+
+ The interpreter is now flattened out. Compare Perl 4's eval.c with
+ the perl 5's pp.c. Compare Perl 4's 900 line interpreter loop in cmd.c
+ with Perl 5's 1 line interpreter loop in run.c. Eventually we'll make
+ everything non-blocking so we can interface nicely with a scheduler.
+
+ eval is now treated more like a subroutine call. Among other things,
+ this means you can return from it.
+
+ Format value lists may be spread over multiple lines by enclosing in
+ curlies.
+
+ You may now define BEGIN and END subroutines for each package. The BEGIN
+ subroutine executes the moment it's parsed. The END subroutine executes
+ just before exiting.
+
+ Flags on the #! line are interpreted even if the script wasn't
+ executed directly. (And even if the script was located by "perl -x"!)
+
+ The ?: operator is now legal as an lvalue.
+
+ List context now propagates to the right side of && and ||, as well
+ as the 2nd and 3rd arguments to ?:.
+
+ The "defined" function can now take a general expression.
+
+ Lexical scoping available via "my". eval can see the current lexical
+ variables.
+
+ Saying "package;" requires explicit package name on global symbols.