summaryrefslogtreecommitdiff
path: root/Changes5.000
diff options
context:
space:
mode:
authorDavid Mitchell <davem@iabyn.com>2009-05-12 12:21:37 +0100
committerDavid Mitchell <davem@iabyn.com>2009-05-12 12:21:37 +0100
commit9c53f8ae1adc497970fff0a4afa6c570831fe2b4 (patch)
treeac4948b8624f68647616db77f7986dd1ceb97c78 /Changes5.000
parenteb1c4873a4d2b3d386b680baf0b251a75d67e654 (diff)
downloadperl-9c53f8ae1adc497970fff0a4afa6c570831fe2b4.tar.gz
remove all Changes* files
Diffstat (limited to 'Changes5.000')
-rw-r--r--Changes5.000185
1 files changed, 0 insertions, 185 deletions
diff --git a/Changes5.000 b/Changes5.000
deleted file mode 100644
index 521db78be9..0000000000
--- a/Changes5.000
+++ /dev/null
@@ -1,185 +0,0 @@
--------------
-Version 5.000
--------------
-
-New things
-----------
- The -w switch is much more informative.
-
- References. See t/op/ref.t for examples. All entities in Perl 5 are
- reference counted so that it knows when each item should be destroyed.
-
- 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. Multiple interpreters
- in the same process are supported (though not with interleaved
- execution yet).
-
- 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
- a do {} block.
-
- 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.
-
- The preferred package delimiter is now :: rather than '.
-
- tie/untie are now preferred to dbmopen/dbmclose. Multiple DBM
- implementations are allowed in the same executable, so you can
- write scripts to interchange data among different formats.
-
- New "and" and "or" operators work just like && and || but with
- a precedence lower than comma, so they work better with list operators.
-
- New functions include: abs(), chr(), uc(), ucfirst(), lc(), lcfirst(),
- chomp(), glob()
-
- require with a number checks to see that the version of Perl that is
- currently running is at least that number.
-
- Dynamic loading of external modules is now supported.
-
- There is a new quote form qw//, which is equivalent to split(' ', q//).
-
- Assignment of a reference to a glob value now just replaces the
- single element of the glob corresponding to the reference type:
- *foo = \$bar, *foo = \&bletch;
-
- Filehandle methods are now supported:
- output_autoflush STDOUT 1;
-
- There is now an "English" module that provides human readable translations
- for cryptic variable names.
-
- Autoload stubs can now call the replacement subroutine with goto &realsub.
-
- Subroutines can be defined lazily in any package by declaring an AUTOLOAD
- routine, which will be called if a non-existent subroutine is called in
- that package.
-
- Several previously added features have been subsumed under the new
- keywords "use" and "no". Saying "use Module LIST" is short for
- BEGIN { require Module; import Module LIST; }
- The "no" keyword is identical except that it calls "unimport" instead.
- The earlier pragma mechanism now uses this mechanism, and two new
- modules have been added to the library to implement "use integer"
- and variations of "use strict vars, refs, subs".
-
- Variables may now be interpolated literally into a pattern by prefixing
- them with \Q, which works just like \U, but backwhacks non-alphanumerics
- instead. There is also a corresponding quotemeta function.
-
- Any quantifier in a regular expression may now be followed by a ? to
- indicate that the pattern is supposed to match as little as possible.
-
- Pattern matches may now be followed by an m or s modifier to explicitly
- request multiline or singleline semantics. An s modifier makes . match
- newline.
-
- Patterns may now contain \A to match only at the beginning of the string,
- and \Z to match only at the end. These differ from ^ and $ in that
- they ignore multiline semantics. In addition, \G matches where the
- last interation of m//g or s///g left off.
-
- Non-backreference-producing parens of various sorts may now be
- indicated by placing a ? directly after the opening parenthesis,
- followed by a character that indicates the purpose of the parens.
- An :, for instance, indicates simple grouping. (?:a|b|c) will
- match any of a, b or c without producing a backreference. It does
- "eat" the input. There are also assertions which do not eat the
- input but do lookahead for you. (?=stuff) indicates that the next
- thing must be "stuff". (?!nonsense) indicates that the next thing
- must not be "nonsense".
-
- The negation operator now treats non-numeric strings specially.
- A -"text" is turned into "-text", so that -bareword is the same
- as "-bareword". If the string already begins with a + or -, it
- is flipped to the other sign.
-
-Incompatibilities
------------------
- @ now always interpolates an array in double-quotish strings. Some programs
- may now need to use backslash to protect any @ that shouldn't interpolate.
-
- Ordinary variables starting with underscore are no longer forced into
- package main.
-
- 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 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. This means you can interpolate list values now.
-
- 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, or as a delimiter for any kind of quote construct.
-
- Some error messages will be different.
-
- The caller function now returns 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.
-
- "reverse" is no longer allowed as the name of a sort subroutine.
-
- taintperl is no longer a separate executable. There is now a -T
- switch to turn on tainting when it isn't turned on automatically.
-
- Symbols starting with _ are no longer forced into package main, except
- for $_ itself (and @_, etc.).
-
- Double-quoted strings may no longer end with an unescaped $ or @.
-
- Negative array subscripts now count from the end of the array.
-
- The comma operator in a scalar context is now guaranteed to give a
- scalar context to its arguments.
-
- The ** operator now binds more tightly than unary minus.
-
- Setting $#array lower now discards array elements so that destructors
- work reasonably.
-
- delete is not guaranteed to return the old value for tied arrays,
- since this capability may be onerous for some modules to implement.
-
- Attempts to set $1 through $9 now result in a run-time error.