diff options
author | David Mitchell <davem@iabyn.com> | 2009-05-12 12:21:37 +0100 |
---|---|---|
committer | David Mitchell <davem@iabyn.com> | 2009-05-12 12:21:37 +0100 |
commit | 9c53f8ae1adc497970fff0a4afa6c570831fe2b4 (patch) | |
tree | ac4948b8624f68647616db77f7986dd1ceb97c78 /Changes5.000 | |
parent | eb1c4873a4d2b3d386b680baf0b251a75d67e654 (diff) | |
download | perl-9c53f8ae1adc497970fff0a4afa6c570831fe2b4.tar.gz |
remove all Changes* files
Diffstat (limited to 'Changes5.000')
-rw-r--r-- | Changes5.000 | 185 |
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. |