summaryrefslogtreecommitdiffstats
path: root/upstream/fedora-rawhide/man1/perl5100delta.1
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:43:11 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:43:11 +0000
commitfc22b3d6507c6745911b9dfcc68f1e665ae13dbc (patch)
treece1e3bce06471410239a6f41282e328770aa404a /upstream/fedora-rawhide/man1/perl5100delta.1
parentInitial commit. (diff)
downloadmanpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.tar.xz
manpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.zip
Adding upstream version 4.22.0.upstream/4.22.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'upstream/fedora-rawhide/man1/perl5100delta.1')
-rw-r--r--upstream/fedora-rawhide/man1/perl5100delta.11500
1 files changed, 1500 insertions, 0 deletions
diff --git a/upstream/fedora-rawhide/man1/perl5100delta.1 b/upstream/fedora-rawhide/man1/perl5100delta.1
new file mode 100644
index 00000000..260f1eab
--- /dev/null
+++ b/upstream/fedora-rawhide/man1/perl5100delta.1
@@ -0,0 +1,1500 @@
+.\" -*- mode: troff; coding: utf-8 -*-
+.\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
+.ie n \{\
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds C`
+. ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+. if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. if !\nF==2 \{\
+. nr % 0
+. nr F 2
+. \}
+. \}
+.\}
+.rr rF
+.\" ========================================================================
+.\"
+.IX Title "PERL5100DELTA 1"
+.TH PERL5100DELTA 1 2024-01-25 "perl v5.38.2" "Perl Programmers Reference Guide"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH NAME
+perl5100delta \- what is new for perl 5.10.0
+.SH DESCRIPTION
+.IX Header "DESCRIPTION"
+This document describes the differences between the 5.8.8 release and
+the 5.10.0 release.
+.PP
+Many of the bug fixes in 5.10.0 were already seen in the 5.8.X maintenance
+releases; they are not duplicated here and are documented in the set of
+man pages named perl58[1\-8]?delta.
+.SH "Core Enhancements"
+.IX Header "Core Enhancements"
+.ie n .SS "The ""feature"" pragma"
+.el .SS "The \f(CWfeature\fP pragma"
+.IX Subsection "The feature pragma"
+The \f(CW\*(C`feature\*(C'\fR pragma is used to enable new syntax that would break Perl's
+backwards-compatibility with older releases of the language. It's a lexical
+pragma, like \f(CW\*(C`strict\*(C'\fR or \f(CW\*(C`warnings\*(C'\fR.
+.PP
+Currently the following new features are available: \f(CW\*(C`switch\*(C'\fR (adds a
+switch statement), \f(CW\*(C`say\*(C'\fR (adds a \f(CW\*(C`say\*(C'\fR built-in function), and \f(CW\*(C`state\*(C'\fR
+(adds a \f(CW\*(C`state\*(C'\fR keyword for declaring "static" variables). Those
+features are described in their own sections of this document.
+.PP
+The \f(CW\*(C`feature\*(C'\fR pragma is also implicitly loaded when you require a minimal
+perl version (with the \f(CW\*(C`use VERSION\*(C'\fR construct) greater than, or equal
+to, 5.9.5. See feature for details.
+.SS "New \fB\-E\fP command-line switch"
+.IX Subsection "New -E command-line switch"
+\&\fB\-E\fR is equivalent to \fB\-e\fR, but it implicitly enables all
+optional features (like \f(CW\*(C`use feature ":5.10"\*(C'\fR).
+.SS "Defined-or operator"
+.IX Subsection "Defined-or operator"
+A new operator \f(CW\*(C`//\*(C'\fR (defined-or) has been implemented.
+The following expression:
+.PP
+.Vb 1
+\& $a // $b
+.Ve
+.PP
+is merely equivalent to
+.PP
+.Vb 1
+\& defined $a ? $a : $b
+.Ve
+.PP
+and the statement
+.PP
+.Vb 1
+\& $c //= $d;
+.Ve
+.PP
+can now be used instead of
+.PP
+.Vb 1
+\& $c = $d unless defined $c;
+.Ve
+.PP
+The \f(CW\*(C`//\*(C'\fR operator has the same precedence and associativity as \f(CW\*(C`||\*(C'\fR.
+Special care has been taken to ensure that this operator Do What You Mean
+while not breaking old code, but some edge cases involving the empty
+regular expression may now parse differently. See perlop for
+details.
+.SS "Switch and Smart Match operator"
+.IX Subsection "Switch and Smart Match operator"
+Perl 5 now has a switch statement. It's available when \f(CWuse feature
+\&\*(Aqswitch\*(Aq\fR is in effect. This feature introduces three new keywords,
+\&\f(CW\*(C`given\*(C'\fR, \f(CW\*(C`when\*(C'\fR, and \f(CW\*(C`default\*(C'\fR:
+.PP
+.Vb 6
+\& given ($foo) {
+\& when (/^abc/) { $abc = 1; }
+\& when (/^def/) { $def = 1; }
+\& when (/^xyz/) { $xyz = 1; }
+\& default { $nothing = 1; }
+\& }
+.Ve
+.PP
+A more complete description of how Perl matches the switch variable
+against the \f(CW\*(C`when\*(C'\fR conditions is given in "Switch statements" in perlsyn.
+.PP
+This kind of match is called \fIsmart match\fR, and it's also possible to use
+it outside of switch statements, via the new \f(CW\*(C`~~\*(C'\fR operator. See
+"Smart matching in detail" in perlsyn.
+.PP
+This feature was contributed by Robin Houston.
+.SS "Regular expressions"
+.IX Subsection "Regular expressions"
+.IP "Recursive Patterns" 4
+.IX Item "Recursive Patterns"
+It is now possible to write recursive patterns without using the \f(CW\*(C`(??{})\*(C'\fR
+construct. This new way is more efficient, and in many cases easier to
+read.
+.Sp
+Each capturing parenthesis can now be treated as an independent pattern
+that can be entered by using the \f(CW\*(C`(?PARNO)\*(C'\fR syntax (\f(CW\*(C`PARNO\*(C'\fR standing for
+"parenthesis number"). For example, the following pattern will match
+nested balanced angle brackets:
+.Sp
+.Vb 10
+\& /
+\& ^ # start of line
+\& ( # start capture buffer 1
+\& < # match an opening angle bracket
+\& (?: # match one of:
+\& (?> # don\*(Aqt backtrack over the inside of this group
+\& [^<>]+ # one or more non angle brackets
+\& ) # end non backtracking group
+\& | # ... or ...
+\& (?1) # recurse to bracket 1 and try it again
+\& )* # 0 or more times.
+\& > # match a closing angle bracket
+\& ) # end capture buffer one
+\& $ # end of line
+\& /x
+.Ve
+.Sp
+PCRE users should note that Perl's recursive regex feature allows
+backtracking into a recursed pattern, whereas in PCRE the recursion is
+atomic or "possessive" in nature. As in the example above, you can
+add (?>) to control this selectively. (Yves Orton)
+.IP "Named Capture Buffers" 4
+.IX Item "Named Capture Buffers"
+It is now possible to name capturing parenthesis in a pattern and refer to
+the captured contents by name. The naming syntax is \f(CW\*(C`(?<NAME>....)\*(C'\fR.
+It's possible to backreference to a named buffer with the \f(CW\*(C`\ek<NAME>\*(C'\fR
+syntax. In code, the new magical hashes \f(CW\*(C`%+\*(C'\fR and \f(CW\*(C`%\-\*(C'\fR can be used to
+access the contents of the capture buffers.
+.Sp
+Thus, to replace all doubled chars with a single copy, one could write
+.Sp
+.Vb 1
+\& s/(?<letter>.)\ek<letter>/$+{letter}/g
+.Ve
+.Sp
+Only buffers with defined contents will be "visible" in the \f(CW\*(C`%+\*(C'\fR hash, so
+it's possible to do something like
+.Sp
+.Vb 3
+\& foreach my $name (keys %+) {
+\& print "content of buffer \*(Aq$name\*(Aq is $+{$name}\en";
+\& }
+.Ve
+.Sp
+The \f(CW\*(C`%\-\*(C'\fR hash is a bit more complete, since it will contain array refs
+holding values from all capture buffers similarly named, if there should
+be many of them.
+.Sp
+\&\f(CW\*(C`%+\*(C'\fR and \f(CW\*(C`%\-\*(C'\fR are implemented as tied hashes through the new module
+\&\f(CW\*(C`Tie::Hash::NamedCapture\*(C'\fR.
+.Sp
+Users exposed to the .NET regex engine will find that the perl
+implementation differs in that the numerical ordering of the buffers
+is sequential, and not "unnamed first, then named". Thus in the pattern
+.Sp
+.Vb 1
+\& /(A)(?<B>B)(C)(?<D>D)/
+.Ve
+.Sp
+\&\f(CW$1\fR will be 'A', \f(CW$2\fR will be 'B', \f(CW$3\fR will be 'C' and \f(CW$4\fR will be 'D' and not
+\&\f(CW$1\fR is 'A', \f(CW$2\fR is 'C' and \f(CW$3\fR is 'B' and \f(CW$4\fR is 'D' that a .NET programmer
+would expect. This is considered a feature. :\-) (Yves Orton)
+.IP "Possessive Quantifiers" 4
+.IX Item "Possessive Quantifiers"
+Perl now supports the "possessive quantifier" syntax of the "atomic match"
+pattern. Basically a possessive quantifier matches as much as it can and never
+gives any back. Thus it can be used to control backtracking. The syntax is
+similar to non-greedy matching, except instead of using a '?' as the modifier
+the '+' is used. Thus \f(CW\*(C`?+\*(C'\fR, \f(CW\*(C`*+\*(C'\fR, \f(CW\*(C`++\*(C'\fR, \f(CW\*(C`{min,max}+\*(C'\fR are now legal
+quantifiers. (Yves Orton)
+.IP "Backtracking control verbs" 4
+.IX Item "Backtracking control verbs"
+The regex engine now supports a number of special-purpose backtrack
+control verbs: (*THEN), (*PRUNE), (*MARK), (*SKIP), (*COMMIT), (*FAIL)
+and (*ACCEPT). See perlre for their descriptions. (Yves Orton)
+.IP "Relative backreferences" 4
+.IX Item "Relative backreferences"
+A new syntax \f(CW\*(C`\eg{N}\*(C'\fR or \f(CW\*(C`\egN\*(C'\fR where "N" is a decimal integer allows a
+safer form of back-reference notation as well as allowing relative
+backreferences. This should make it easier to generate and embed patterns
+that contain backreferences. See "Capture buffers" in perlre. (Yves Orton)
+.ie n .IP """\eK"" escape" 4
+.el .IP "\f(CW\eK\fR escape" 4
+.IX Item "K escape"
+The functionality of Jeff Pinyan's module Regexp::Keep has been added to
+the core. In regular expressions you can now use the special escape \f(CW\*(C`\eK\*(C'\fR
+as a way to do something like floating length positive lookbehind. It is
+also useful in substitutions like:
+.Sp
+.Vb 1
+\& s/(foo)bar/$1/g
+.Ve
+.Sp
+that can now be converted to
+.Sp
+.Vb 1
+\& s/foo\eKbar//g
+.Ve
+.Sp
+which is much more efficient. (Yves Orton)
+.IP "Vertical and horizontal whitespace, and linebreak" 4
+.IX Item "Vertical and horizontal whitespace, and linebreak"
+Regular expressions now recognize the \f(CW\*(C`\ev\*(C'\fR and \f(CW\*(C`\eh\*(C'\fR escapes that match
+vertical and horizontal whitespace, respectively. \f(CW\*(C`\eV\*(C'\fR and \f(CW\*(C`\eH\*(C'\fR
+logically match their complements.
+.Sp
+\&\f(CW\*(C`\eR\*(C'\fR matches a generic linebreak, that is, vertical whitespace, plus
+the multi-character sequence \f(CW"\ex0D\ex0A"\fR.
+.IP "Optional pre-match and post-match captures with the /p flag" 4
+.IX Item "Optional pre-match and post-match captures with the /p flag"
+There is a new flag \f(CW\*(C`/p\*(C'\fR for regular expressions. Using this
+makes the engine preserve a copy of the part of the matched string before
+the matching substring to the new special variable \f(CW\*(C`${^PREMATCH}\*(C'\fR, the
+part after the matching substring to \f(CW\*(C`${^POSTMATCH}\*(C'\fR, and the matched
+substring itself to \f(CW\*(C`${^MATCH}\*(C'\fR.
+.Sp
+Perl is still able to store these substrings to the special variables
+\&\f(CW\*(C`$\`\*(C'\fR, \f(CW\*(C`$\*(Aq\*(C'\fR, \f(CW$&\fR, but using these variables anywhere in the program
+adds a penalty to all regular expression matches, whereas if you use
+the \f(CW\*(C`/p\*(C'\fR flag and the new special variables instead, you pay only for
+the regular expressions where the flag is used.
+.Sp
+For more detail on the new variables, see perlvar; for the use of
+the regular expression flag, see perlop and perlre.
+.ie n .SS say()
+.el .SS \f(CWsay()\fP
+.IX Subsection "say()"
+\&\fBsay()\fR is a new built-in, only available when \f(CW\*(C`use feature \*(Aqsay\*(Aq\*(C'\fR is in
+effect, that is similar to \fBprint()\fR, but that implicitly appends a newline
+to the printed string. See "say" in perlfunc. (Robin Houston)
+.ie n .SS "Lexical $_"
+.el .SS "Lexical \f(CW$_\fP"
+.IX Subsection "Lexical $_"
+The default variable \f(CW$_\fR can now be lexicalized, by declaring it like
+any other lexical variable, with a simple
+.PP
+.Vb 1
+\& my $_;
+.Ve
+.PP
+The operations that default on \f(CW$_\fR will use the lexically-scoped
+version of \f(CW$_\fR when it exists, instead of the global \f(CW$_\fR.
+.PP
+In a \f(CW\*(C`map\*(C'\fR or a \f(CW\*(C`grep\*(C'\fR block, if \f(CW$_\fR was previously my'ed, then the
+\&\f(CW$_\fR inside the block is lexical as well (and scoped to the block).
+.PP
+In a scope where \f(CW$_\fR has been lexicalized, you can still have access to
+the global version of \f(CW$_\fR by using \f(CW$::_\fR, or, more simply, by
+overriding the lexical declaration with \f(CW\*(C`our $_\*(C'\fR. (Rafael Garcia-Suarez)
+.ie n .SS "The ""_"" prototype"
+.el .SS "The \f(CW_\fP prototype"
+.IX Subsection "The _ prototype"
+A new prototype character has been added. \f(CW\*(C`_\*(C'\fR is equivalent to \f(CW\*(C`$\*(C'\fR but
+defaults to \f(CW$_\fR if the corresponding argument isn't supplied (both \f(CW\*(C`$\*(C'\fR
+and \f(CW\*(C`_\*(C'\fR denote a scalar). Due to the optional nature of the argument,
+you can only use it at the end of a prototype, or before a semicolon.
+.PP
+This has a small incompatible consequence: the \fBprototype()\fR function has
+been adjusted to return \f(CW\*(C`_\*(C'\fR for some built-ins in appropriate cases (for
+example, \f(CWprototype(\*(AqCORE::rmdir\*(Aq)\fR). (Rafael Garcia-Suarez)
+.SS "UNITCHECK blocks"
+.IX Subsection "UNITCHECK blocks"
+\&\f(CW\*(C`UNITCHECK\*(C'\fR, a new special code block has been introduced, in addition to
+\&\f(CW\*(C`BEGIN\*(C'\fR, \f(CW\*(C`CHECK\*(C'\fR, \f(CW\*(C`INIT\*(C'\fR and \f(CW\*(C`END\*(C'\fR.
+.PP
+\&\f(CW\*(C`CHECK\*(C'\fR and \f(CW\*(C`INIT\*(C'\fR blocks, while useful for some specialized purposes,
+are always executed at the transition between the compilation and the
+execution of the main program, and thus are useless whenever code is
+loaded at runtime. On the other hand, \f(CW\*(C`UNITCHECK\*(C'\fR blocks are executed
+just after the unit which defined them has been compiled. See perlmod
+for more information. (Alex Gough)
+.ie n .SS "New Pragma, ""mro"""
+.el .SS "New Pragma, \f(CWmro\fP"
+.IX Subsection "New Pragma, mro"
+A new pragma, \f(CW\*(C`mro\*(C'\fR (for Method Resolution Order) has been added. It
+permits to switch, on a per-class basis, the algorithm that perl uses to
+find inherited methods in case of a multiple inheritance hierarchy. The
+default MRO hasn't changed (DFS, for Depth First Search). Another MRO is
+available: the C3 algorithm. See mro for more information.
+(Brandon Black)
+.PP
+Note that, due to changes in the implementation of class hierarchy search,
+code that used to undef the \f(CW*ISA\fR glob will most probably break. Anyway,
+undef'ing \f(CW*ISA\fR had the side-effect of removing the magic on the \f(CW@ISA\fR
+array and should not have been done in the first place. Also, the
+cache \f(CW*::ISA::CACHE::\fR no longer exists; to force reset the \f(CW@ISA\fR cache,
+you now need to use the \f(CW\*(C`mro\*(C'\fR API, or more simply to assign to \f(CW@ISA\fR
+(e.g. with \f(CW\*(C`@ISA = @ISA\*(C'\fR).
+.SS "\fBreaddir()\fP may return a ""short filename"" on Windows"
+.IX Subsection "readdir() may return a ""short filename"" on Windows"
+The \fBreaddir()\fR function may return a "short filename" when the long
+filename contains characters outside the ANSI codepage. Similarly
+\&\fBCwd::cwd()\fR may return a short directory name, and \fBglob()\fR may return short
+names as well. On the NTFS file system these short names can always be
+represented in the ANSI codepage. This will not be true for all other file
+system drivers; e.g. the FAT filesystem stores short filenames in the OEM
+codepage, so some files on FAT volumes remain inaccessible through the
+ANSI APIs.
+.PP
+Similarly, $^X, \f(CW@INC\fR, and \f(CW$ENV\fR{PATH} are preprocessed at startup to make
+sure all paths are valid in the ANSI codepage (if possible).
+.PP
+The \fBWin32::GetLongPathName()\fR function now returns the UTF\-8 encoded
+correct long file name instead of using replacement characters to force
+the name into the ANSI codepage. The new \fBWin32::GetANSIPathName()\fR
+function can be used to turn a long pathname into a short one only if the
+long one cannot be represented in the ANSI codepage.
+.PP
+Many other functions in the \f(CW\*(C`Win32\*(C'\fR module have been improved to accept
+UTF\-8 encoded arguments. Please see Win32 for details.
+.SS "\fBreadpipe()\fP is now overridable"
+.IX Subsection "readpipe() is now overridable"
+The built-in function \fBreadpipe()\fR is now overridable. Overriding it permits
+also to override its operator counterpart, \f(CW\*(C`qx//\*(C'\fR (a.k.a. \f(CW\`\`\fR).
+Moreover, it now defaults to \f(CW$_\fR if no argument is provided. (Rafael
+Garcia-Suarez)
+.SS "Default argument for \fBreadline()\fP"
+.IX Subsection "Default argument for readline()"
+\&\fBreadline()\fR now defaults to \f(CW*ARGV\fR if no argument is provided. (Rafael
+Garcia-Suarez)
+.SS "\fBstate()\fP variables"
+.IX Subsection "state() variables"
+A new class of variables has been introduced. State variables are similar
+to \f(CW\*(C`my\*(C'\fR variables, but are declared with the \f(CW\*(C`state\*(C'\fR keyword in place of
+\&\f(CW\*(C`my\*(C'\fR. They're visible only in their lexical scope, but their value is
+persistent: unlike \f(CW\*(C`my\*(C'\fR variables, they're not undefined at scope entry,
+but retain their previous value. (Rafael Garcia-Suarez, Nicholas Clark)
+.PP
+To use state variables, one needs to enable them by using
+.PP
+.Vb 1
+\& use feature \*(Aqstate\*(Aq;
+.Ve
+.PP
+or by using the \f(CW\*(C`\-E\*(C'\fR command-line switch in one-liners.
+See "Persistent Private Variables" in perlsub.
+.SS "Stacked filetest operators"
+.IX Subsection "Stacked filetest operators"
+As a new form of syntactic sugar, it's now possible to stack up filetest
+operators. You can now write \f(CW\*(C`\-f \-w \-x $file\*(C'\fR in a row to mean
+\&\f(CW\*(C`\-x $file && \-w _ && \-f _\*(C'\fR. See "\-X" in perlfunc.
+.SS \fBUNIVERSAL::DOES()\fP
+.IX Subsection "UNIVERSAL::DOES()"
+The \f(CW\*(C`UNIVERSAL\*(C'\fR class has a new method, \f(CWDOES()\fR. It has been added to
+solve semantic problems with the \f(CWisa()\fR method. \f(CWisa()\fR checks for
+inheritance, while \f(CWDOES()\fR has been designed to be overridden when
+module authors use other types of relations between classes (in addition
+to inheritance). (chromatic)
+.PP
+See "$obj\->DOES( ROLE )" in UNIVERSAL.
+.SS Formats
+.IX Subsection "Formats"
+Formats were improved in several ways. A new field, \f(CW\*(C`^*\*(C'\fR, can be used for
+variable-width, one-line-at-a-time text. Null characters are now handled
+correctly in picture lines. Using \f(CW\*(C`@#\*(C'\fR and \f(CW\*(C`~~\*(C'\fR together will now
+produce a compile-time error, as those format fields are incompatible.
+perlform has been improved, and miscellaneous bugs fixed.
+.SS "Byte-order modifiers for \fBpack()\fP and \fBunpack()\fP"
+.IX Subsection "Byte-order modifiers for pack() and unpack()"
+There are two new byte-order modifiers, \f(CW\*(C`>\*(C'\fR (big-endian) and \f(CW\*(C`<\*(C'\fR
+(little-endian), that can be appended to most \fBpack()\fR and \fBunpack()\fR template
+characters and groups to force a certain byte-order for that type or group.
+See "pack" in perlfunc and perlpacktut for details.
+.ie n .SS """no VERSION"""
+.el .SS "\f(CWno VERSION\fP"
+.IX Subsection "no VERSION"
+You can now use \f(CW\*(C`no\*(C'\fR followed by a version number to specify that you
+want to use a version of perl older than the specified one.
+.ie n .SS """chdir"", ""chmod"" and ""chown"" on filehandles"
+.el .SS "\f(CWchdir\fP, \f(CWchmod\fP and \f(CWchown\fP on filehandles"
+.IX Subsection "chdir, chmod and chown on filehandles"
+\&\f(CW\*(C`chdir\*(C'\fR, \f(CW\*(C`chmod\*(C'\fR and \f(CW\*(C`chown\*(C'\fR can now work on filehandles as well as
+filenames, if the system supports respectively \f(CW\*(C`fchdir\*(C'\fR, \f(CW\*(C`fchmod\*(C'\fR and
+\&\f(CW\*(C`fchown\*(C'\fR, thanks to a patch provided by Gisle Aas.
+.SS "OS groups"
+.IX Subsection "OS groups"
+\&\f(CW$(\fR and \f(CW$)\fR now return groups in the order where the OS returns them,
+thanks to Gisle Aas. This wasn't previously the case.
+.SS "Recursive sort subs"
+.IX Subsection "Recursive sort subs"
+You can now use recursive subroutines with \fBsort()\fR, thanks to Robin Houston.
+.SS "Exceptions in constant folding"
+.IX Subsection "Exceptions in constant folding"
+The constant folding routine is now wrapped in an exception handler, and
+if folding throws an exception (such as attempting to evaluate 0/0), perl
+now retains the current optree, rather than aborting the whole program.
+Without this change, programs would not compile if they had expressions that
+happened to generate exceptions, even though those expressions were in code
+that could never be reached at runtime. (Nicholas Clark, Dave Mitchell)
+.ie n .SS "Source filters in @INC"
+.el .SS "Source filters in \f(CW@INC\fP"
+.IX Subsection "Source filters in @INC"
+It's possible to enhance the mechanism of subroutine hooks in \f(CW@INC\fR by
+adding a source filter on top of the filehandle opened and returned by the
+hook. This feature was planned a long time ago, but wasn't quite working
+until now. See "require" in perlfunc for details. (Nicholas Clark)
+.SS "New internal variables"
+.IX Subsection "New internal variables"
+.ie n .IP """${^RE_DEBUG_FLAGS}""" 4
+.el .IP \f(CW${^RE_DEBUG_FLAGS}\fR 4
+.IX Item "${^RE_DEBUG_FLAGS}"
+This variable controls what debug flags are in effect for the regular
+expression engine when running under \f(CW\*(C`use re "debug"\*(C'\fR. See re for
+details.
+.ie n .IP """${^CHILD_ERROR_NATIVE}""" 4
+.el .IP \f(CW${^CHILD_ERROR_NATIVE}\fR 4
+.IX Item "${^CHILD_ERROR_NATIVE}"
+This variable gives the native status returned by the last pipe close,
+backtick command, successful call to \fBwait()\fR or \fBwaitpid()\fR, or from the
+\&\fBsystem()\fR operator. See perlvar for details. (Contributed by Gisle Aas.)
+.ie n .IP """${^RE_TRIE_MAXBUF}""" 4
+.el .IP \f(CW${^RE_TRIE_MAXBUF}\fR 4
+.IX Item "${^RE_TRIE_MAXBUF}"
+See "Trie optimisation of literal string alternations".
+.ie n .IP """${^WIN32_SLOPPY_STAT}""" 4
+.el .IP \f(CW${^WIN32_SLOPPY_STAT}\fR 4
+.IX Item "${^WIN32_SLOPPY_STAT}"
+See "Sloppy stat on Windows".
+.SS Miscellaneous
+.IX Subsection "Miscellaneous"
+\&\f(CWunpack()\fR now defaults to unpacking the \f(CW$_\fR variable.
+.PP
+\&\f(CWmkdir()\fR without arguments now defaults to \f(CW$_\fR.
+.PP
+The internal dump output has been improved, so that non-printable characters
+such as newline and backspace are output in \f(CW\*(C`\ex\*(C'\fR notation, rather than
+octal.
+.PP
+The \fB\-C\fR option can no longer be used on the \f(CW\*(C`#!\*(C'\fR line. It wasn't
+working there anyway, since the standard streams are already set up
+at this point in the execution of the perl interpreter. You can use
+\&\fBbinmode()\fR instead to get the desired behaviour.
+.SS "UCD 5.0.0"
+.IX Subsection "UCD 5.0.0"
+The copy of the Unicode Character Database included in Perl 5 has
+been updated to version 5.0.0.
+.SS MAD
+.IX Subsection "MAD"
+MAD, which stands for \fIMiscellaneous Attribute Decoration\fR, is a
+still-in-development work leading to a Perl 5 to Perl 6 converter. To
+enable it, it's necessary to pass the argument \f(CW\*(C`\-Dmad\*(C'\fR to Configure. The
+obtained perl isn't binary compatible with a regular perl 5.10, and has
+space and speed penalties; moreover not all regression tests still pass
+with it. (Larry Wall, Nicholas Clark)
+.SS "\fBkill()\fP on Windows"
+.IX Subsection "kill() on Windows"
+On Windows platforms, \f(CW\*(C`kill(\-9, $pid)\*(C'\fR now kills a process tree.
+(On Unix, this delivers the signal to all processes in the same process
+group.)
+.SH "Incompatible Changes"
+.IX Header "Incompatible Changes"
+.SS "Packing and UTF\-8 strings"
+.IX Subsection "Packing and UTF-8 strings"
+The semantics of \fBpack()\fR and \fBunpack()\fR regarding UTF\-8\-encoded data has been
+changed. Processing is now by default character per character instead of
+byte per byte on the underlying encoding. Notably, code that used things
+like \f(CW\*(C`pack("a*", $string)\*(C'\fR to see through the encoding of string will now
+simply get back the original \f(CW$string\fR. Packed strings can also get upgraded
+during processing when you store upgraded characters. You can get the old
+behaviour by using \f(CW\*(C`use bytes\*(C'\fR.
+.PP
+To be consistent with \fBpack()\fR, the \f(CW\*(C`C0\*(C'\fR in \fBunpack()\fR templates indicates
+that the data is to be processed in character mode, i.e. character by
+character; on the contrary, \f(CW\*(C`U0\*(C'\fR in \fBunpack()\fR indicates UTF\-8 mode, where
+the packed string is processed in its UTF\-8\-encoded Unicode form on a byte
+by byte basis. This is reversed with regard to perl 5.8.X, but now consistent
+between \fBpack()\fR and \fBunpack()\fR.
+.PP
+Moreover, \f(CW\*(C`C0\*(C'\fR and \f(CW\*(C`U0\*(C'\fR can also be used in \fBpack()\fR templates to specify
+respectively character and byte modes.
+.PP
+\&\f(CW\*(C`C0\*(C'\fR and \f(CW\*(C`U0\*(C'\fR in the middle of a pack or unpack format now switch to the
+specified encoding mode, honoring parens grouping. Previously, parens were
+ignored.
+.PP
+Also, there is a new \fBpack()\fR character format, \f(CW\*(C`W\*(C'\fR, which is intended to
+replace the old \f(CW\*(C`C\*(C'\fR. \f(CW\*(C`C\*(C'\fR is kept for unsigned chars coded as bytes in
+the strings internal representation. \f(CW\*(C`W\*(C'\fR represents unsigned (logical)
+character values, which can be greater than 255. It is therefore more
+robust when dealing with potentially UTF\-8\-encoded data (as \f(CW\*(C`C\*(C'\fR will wrap
+values outside the range 0..255, and not respect the string encoding).
+.PP
+In practice, that means that pack formats are now encoding-neutral, except
+\&\f(CW\*(C`C\*(C'\fR.
+.PP
+For consistency, \f(CW\*(C`A\*(C'\fR in \fBunpack()\fR format now trims all Unicode whitespace
+from the end of the string. Before perl 5.9.2, it used to strip only the
+classical ASCII space characters.
+.SS "Byte/character count feature in \fBunpack()\fP"
+.IX Subsection "Byte/character count feature in unpack()"
+A new \fBunpack()\fR template character, \f(CW"."\fR, returns the number of bytes or
+characters (depending on the selected encoding mode, see above) read so far.
+.ie n .SS "The $* and $# variables have been removed"
+.el .SS "The \f(CW$*\fP and \f(CW$#\fP variables have been removed"
+.IX Subsection "The $* and $# variables have been removed"
+\&\f(CW$*\fR, which was deprecated in favor of the \f(CW\*(C`/s\*(C'\fR and \f(CW\*(C`/m\*(C'\fR regexp
+modifiers, has been removed.
+.PP
+The deprecated \f(CW$#\fR variable (output format for numbers) has been
+removed.
+.PP
+Two new severe warnings, \f(CW\*(C`$#/$* is no longer supported\*(C'\fR, have been added.
+.SS "\fBsubstr()\fP lvalues are no longer fixed-length"
+.IX Subsection "substr() lvalues are no longer fixed-length"
+The lvalues returned by the three argument form of \fBsubstr()\fR used to be a
+"fixed length window" on the original string. In some cases this could
+cause surprising action at distance or other undefined behaviour. Now the
+length of the window adjusts itself to the length of the string assigned to
+it.
+.ie n .SS "Parsing of ""\-f _"""
+.el .SS "Parsing of \f(CW\-f _\fP"
+.IX Subsection "Parsing of -f _"
+The identifier \f(CW\*(C`_\*(C'\fR is now forced to be a bareword after a filetest
+operator. This solves a number of misparsing issues when a global \f(CW\*(C`_\*(C'\fR
+subroutine is defined.
+.ie n .SS """:unique"""
+.el .SS \f(CW:unique\fP
+.IX Subsection ":unique"
+The \f(CW\*(C`:unique\*(C'\fR attribute has been made a no-op, since its current
+implementation was fundamentally flawed and not threadsafe.
+.SS "Effect of pragmas in eval"
+.IX Subsection "Effect of pragmas in eval"
+The compile-time value of the \f(CW\*(C`%^H\*(C'\fR hint variable can now propagate into
+eval("")uated code. This makes it more useful to implement lexical
+pragmas.
+.PP
+As a side-effect of this, the overloaded-ness of constants now propagates
+into eval("").
+.SS "chdir FOO"
+.IX Subsection "chdir FOO"
+A bareword argument to \fBchdir()\fR is now recognized as a file handle.
+Earlier releases interpreted the bareword as a directory name.
+(Gisle Aas)
+.SS "Handling of .pmc files"
+.IX Subsection "Handling of .pmc files"
+An old feature of perl was that before \f(CW\*(C`require\*(C'\fR or \f(CW\*(C`use\*(C'\fR look for a
+file with a \fI.pm\fR extension, they will first look for a similar filename
+with a \fI.pmc\fR extension. If this file is found, it will be loaded in
+place of any potentially existing file ending in a \fI.pm\fR extension.
+.PP
+Previously, \fI.pmc\fR files were loaded only if more recent than the
+matching \fI.pm\fR file. Starting with 5.9.4, they'll be always loaded if
+they exist.
+.ie n .SS "$^V is now a ""version"" object instead of a v\-string"
+.el .SS "$^V is now a \f(CWversion\fP object instead of a v\-string"
+.IX Subsection "$^V is now a version object instead of a v-string"
+$^V can still be used with the \f(CW%vd\fR format in printf, but any
+character-level operations will now access the string representation
+of the \f(CW\*(C`version\*(C'\fR object and not the ordinals of a v\-string.
+Expressions like \f(CW\*(C`substr($^V, 0, 2)\*(C'\fR or \f(CW\*(C`split //, $^V\*(C'\fR
+no longer work and must be rewritten.
+.SS "@\- and @+ in patterns"
+.IX Subsection "@- and @+ in patterns"
+The special arrays \f(CW\*(C`@\-\*(C'\fR and \f(CW\*(C`@+\*(C'\fR are no longer interpolated in regular
+expressions. (Sadahiro Tomoyuki)
+.ie n .SS "$AUTOLOAD can now be tainted"
+.el .SS "\f(CW$AUTOLOAD\fP can now be tainted"
+.IX Subsection "$AUTOLOAD can now be tainted"
+If you call a subroutine by a tainted name, and if it defers to an
+AUTOLOAD function, then \f(CW$AUTOLOAD\fR will be (correctly) tainted.
+(Rick Delaney)
+.SS "Tainting and printf"
+.IX Subsection "Tainting and printf"
+When perl is run under taint mode, \f(CWprintf()\fR and \f(CWsprintf()\fR will now
+reject any tainted format argument. (Rafael Garcia-Suarez)
+.SS "undef and signal handlers"
+.IX Subsection "undef and signal handlers"
+Undefining or deleting a signal handler via \f(CW\*(C`undef $SIG{FOO}\*(C'\fR is now
+equivalent to setting it to \f(CW\*(AqDEFAULT\*(Aq\fR. (Rafael Garcia-Suarez)
+.SS "strictures and dereferencing in \fBdefined()\fP"
+.IX Subsection "strictures and dereferencing in defined()"
+\&\f(CW\*(C`use strict \*(Aqrefs\*(Aq\*(C'\fR was ignoring taking a hard reference in an argument
+to \fBdefined()\fR, as in :
+.PP
+.Vb 3
+\& use strict \*(Aqrefs\*(Aq;
+\& my $x = \*(Aqfoo\*(Aq;
+\& if (defined $$x) {...}
+.Ve
+.PP
+This now correctly produces the run-time error \f(CW\*(C`Can\*(Aqt use string as a
+SCALAR ref while "strict refs" in use\*(C'\fR.
+.PP
+\&\f(CW\*(C`defined @$foo\*(C'\fR and \f(CW\*(C`defined %$bar\*(C'\fR are now also subject to \f(CWstrict
+\&\*(Aqrefs\*(Aq\fR (that is, \f(CW$foo\fR and \f(CW$bar\fR shall be proper references there.)
+(\f(CWdefined(@foo)\fR and \f(CWdefined(%bar)\fR are discouraged constructs anyway.)
+(Nicholas Clark)
+.ie n .SS """(?p{})"" has been removed"
+.el .SS "\f(CW(?p{})\fP has been removed"
+.IX Subsection "(?p{}) has been removed"
+The regular expression construct \f(CW\*(C`(?p{})\*(C'\fR, which was deprecated in perl
+5.8, has been removed. Use \f(CW\*(C`(??{})\*(C'\fR instead. (Rafael Garcia-Suarez)
+.SS "Pseudo-hashes have been removed"
+.IX Subsection "Pseudo-hashes have been removed"
+Support for pseudo-hashes has been removed from Perl 5.9. (The \f(CW\*(C`fields\*(C'\fR
+pragma remains here, but uses an alternate implementation.)
+.SS "Removal of the bytecode compiler and of perlcc"
+.IX Subsection "Removal of the bytecode compiler and of perlcc"
+\&\f(CW\*(C`perlcc\*(C'\fR, the byteloader and the supporting modules (B::C, B::CC,
+B::Bytecode, etc.) are no longer distributed with the perl sources. Those
+experimental tools have never worked reliably, and, due to the lack of
+volunteers to keep them in line with the perl interpreter developments, it
+was decided to remove them instead of shipping a broken version of those.
+The last version of those modules can be found with perl 5.9.4.
+.PP
+However the B compiler framework stays supported in the perl core, as with
+the more useful modules it has permitted (among others, B::Deparse and
+B::Concise).
+.SS "Removal of the JPL"
+.IX Subsection "Removal of the JPL"
+The JPL (Java-Perl Lingo) has been removed from the perl sources tarball.
+.SS "Recursive inheritance detected earlier"
+.IX Subsection "Recursive inheritance detected earlier"
+Perl will now immediately throw an exception if you modify any package's
+\&\f(CW@ISA\fR in such a way that it would cause recursive inheritance.
+.PP
+Previously, the exception would not occur until Perl attempted to make
+use of the recursive inheritance while resolving a method or doing a
+\&\f(CW\*(C`$foo\->isa($bar)\*(C'\fR lookup.
+.SS "warnings::enabled and warnings::warnif changed to favor users of modules"
+.IX Subsection "warnings::enabled and warnings::warnif changed to favor users of modules"
+The behaviour in 5.10.x favors the person using the module;
+The behaviour in 5.8.x favors the module writer;
+.PP
+Assume the following code:
+.PP
+.Vb 5
+\& main calls Foo::Bar::baz()
+\& Foo::Bar inherits from Foo::Base
+\& Foo::Bar::baz() calls Foo::Base::_bazbaz()
+\& Foo::Base::_bazbaz() calls: warnings::warnif(\*(Aqsubstr\*(Aq, \*(Aqsome warning
+\&message\*(Aq);
+.Ve
+.PP
+On 5.8.x, the code warns when Foo::Bar contains \f(CW\*(C`use warnings;\*(C'\fR
+It does not matter if Foo::Base or main have warnings enabled
+to disable the warning one has to modify Foo::Bar.
+.PP
+On 5.10.0 and newer, the code warns when main contains \f(CW\*(C`use warnings;\*(C'\fR
+It does not matter if Foo::Base or Foo::Bar have warnings enabled
+to disable the warning one has to modify main.
+.SH "Modules and Pragmata"
+.IX Header "Modules and Pragmata"
+.SS "Upgrading individual core modules"
+.IX Subsection "Upgrading individual core modules"
+Even more core modules are now also available separately through the
+CPAN. If you wish to update one of these modules, you don't need to
+wait for a new perl release. From within the cpan shell, running the
+\&'r' command will report on modules with upgrades available. See
+\&\f(CW\*(C`perldoc CPAN\*(C'\fR for more information.
+.SS "Pragmata Changes"
+.IX Subsection "Pragmata Changes"
+.ie n .IP """feature""" 4
+.el .IP \f(CWfeature\fR 4
+.IX Item "feature"
+The new pragma \f(CW\*(C`feature\*(C'\fR is used to enable new features that might break
+old code. See "The \f(CW\*(C`feature\*(C'\fR pragma" above.
+.ie n .IP """mro""" 4
+.el .IP \f(CWmro\fR 4
+.IX Item "mro"
+This new pragma enables to change the algorithm used to resolve inherited
+methods. See "New Pragma, \f(CW\*(C`mro\*(C'\fR" above.
+.ie n .IP "Scoping of the ""sort"" pragma" 4
+.el .IP "Scoping of the \f(CWsort\fR pragma" 4
+.IX Item "Scoping of the sort pragma"
+The \f(CW\*(C`sort\*(C'\fR pragma is now lexically scoped. Its effect used to be global.
+.ie n .IP "Scoping of ""bignum"", ""bigint"", ""bigrat""" 4
+.el .IP "Scoping of \f(CWbignum\fR, \f(CWbigint\fR, \f(CWbigrat\fR" 4
+.IX Item "Scoping of bignum, bigint, bigrat"
+The three numeric pragmas \f(CW\*(C`bignum\*(C'\fR, \f(CW\*(C`bigint\*(C'\fR and \f(CW\*(C`bigrat\*(C'\fR are now
+lexically scoped. (Tels)
+.ie n .IP """base""" 4
+.el .IP \f(CWbase\fR 4
+.IX Item "base"
+The \f(CW\*(C`base\*(C'\fR pragma now warns if a class tries to inherit from itself.
+(Curtis "Ovid" Poe)
+.ie n .IP """strict"" and ""warnings""" 4
+.el .IP "\f(CWstrict\fR and \f(CWwarnings\fR" 4
+.IX Item "strict and warnings"
+\&\f(CW\*(C`strict\*(C'\fR and \f(CW\*(C`warnings\*(C'\fR will now complain loudly if they are loaded via
+incorrect casing (as in \f(CW\*(C`use Strict;\*(C'\fR). (Johan Vromans)
+.ie n .IP """version""" 4
+.el .IP \f(CWversion\fR 4
+.IX Item "version"
+The \f(CW\*(C`version\*(C'\fR module provides support for version objects.
+.ie n .IP """warnings""" 4
+.el .IP \f(CWwarnings\fR 4
+.IX Item "warnings"
+The \f(CW\*(C`warnings\*(C'\fR pragma doesn't load \f(CW\*(C`Carp\*(C'\fR anymore. That means that code
+that used \f(CW\*(C`Carp\*(C'\fR routines without having loaded it at compile time might
+need to be adjusted; typically, the following (faulty) code won't work
+anymore, and will require parentheses to be added after the function name:
+.Sp
+.Vb 3
+\& use warnings;
+\& require Carp;
+\& Carp::confess \*(Aqargh\*(Aq;
+.Ve
+.ie n .IP """less""" 4
+.el .IP \f(CWless\fR 4
+.IX Item "less"
+\&\f(CW\*(C`less\*(C'\fR now does something useful (or at least it tries to). In fact, it
+has been turned into a lexical pragma. So, in your modules, you can now
+test whether your users have requested to use less CPU, or less memory,
+less magic, or maybe even less fat. See less for more. (Joshua ben
+Jore)
+.SS "New modules"
+.IX Subsection "New modules"
+.IP \(bu 4
+\&\f(CW\*(C`encoding::warnings\*(C'\fR, by Audrey Tang, is a module to emit warnings
+whenever an ASCII character string containing high-bit bytes is implicitly
+converted into UTF\-8. It's a lexical pragma since Perl 5.9.4; on older
+perls, its effect is global.
+.IP \(bu 4
+\&\f(CW\*(C`Module::CoreList\*(C'\fR, by Richard Clamp, is a small handy module that tells
+you what versions of core modules ship with any versions of Perl 5. It
+comes with a command-line frontend, \f(CW\*(C`corelist\*(C'\fR.
+.IP \(bu 4
+\&\f(CW\*(C`Math::BigInt::FastCalc\*(C'\fR is an XS-enabled, and thus faster, version of
+\&\f(CW\*(C`Math::BigInt::Calc\*(C'\fR.
+.IP \(bu 4
+\&\f(CW\*(C`Compress::Zlib\*(C'\fR is an interface to the zlib compression library. It
+comes with a bundled version of zlib, so having a working zlib is not a
+prerequisite to install it. It's used by \f(CW\*(C`Archive::Tar\*(C'\fR (see below).
+.IP \(bu 4
+\&\f(CW\*(C`IO::Zlib\*(C'\fR is an \f(CW\*(C`IO::\*(C'\fR\-style interface to \f(CW\*(C`Compress::Zlib\*(C'\fR.
+.IP \(bu 4
+\&\f(CW\*(C`Archive::Tar\*(C'\fR is a module to manipulate \f(CW\*(C`tar\*(C'\fR archives.
+.IP \(bu 4
+\&\f(CW\*(C`Digest::SHA\*(C'\fR is a module used to calculate many types of SHA digests,
+has been included for SHA support in the CPAN module.
+.IP \(bu 4
+\&\f(CW\*(C`ExtUtils::CBuilder\*(C'\fR and \f(CW\*(C`ExtUtils::ParseXS\*(C'\fR have been added.
+.IP \(bu 4
+\&\f(CW\*(C`Hash::Util::FieldHash\*(C'\fR, by Anno Siegel, has been added. This module
+provides support for \fIfield hashes\fR: hashes that maintain an association
+of a reference with a value, in a thread-safe garbage-collected way.
+Such hashes are useful to implement inside-out objects.
+.IP \(bu 4
+\&\f(CW\*(C`Module::Build\*(C'\fR, by Ken Williams, has been added. It's an alternative to
+\&\f(CW\*(C`ExtUtils::MakeMaker\*(C'\fR to build and install perl modules.
+.IP \(bu 4
+\&\f(CW\*(C`Module::Load\*(C'\fR, by Jos Boumans, has been added. It provides a single
+interface to load Perl modules and \fI.pl\fR files.
+.IP \(bu 4
+\&\f(CW\*(C`Module::Loaded\*(C'\fR, by Jos Boumans, has been added. It's used to mark
+modules as loaded or unloaded.
+.IP \(bu 4
+\&\f(CW\*(C`Package::Constants\*(C'\fR, by Jos Boumans, has been added. It's a simple
+helper to list all constants declared in a given package.
+.IP \(bu 4
+\&\f(CW\*(C`Win32API::File\*(C'\fR, by Tye McQueen, has been added (for Windows builds).
+This module provides low-level access to Win32 system API calls for
+files/dirs.
+.IP \(bu 4
+\&\f(CW\*(C`Locale::Maketext::Simple\*(C'\fR, needed by CPANPLUS, is a simple wrapper around
+\&\f(CW\*(C`Locale::Maketext::Lexicon\*(C'\fR. Note that \f(CW\*(C`Locale::Maketext::Lexicon\*(C'\fR isn't
+included in the perl core; the behaviour of \f(CW\*(C`Locale::Maketext::Simple\*(C'\fR
+gracefully degrades when the later isn't present.
+.IP \(bu 4
+\&\f(CW\*(C`Params::Check\*(C'\fR implements a generic input parsing/checking mechanism. It
+is used by CPANPLUS.
+.IP \(bu 4
+\&\f(CW\*(C`Term::UI\*(C'\fR simplifies the task to ask questions at a terminal prompt.
+.IP \(bu 4
+\&\f(CW\*(C`Object::Accessor\*(C'\fR provides an interface to create per-object accessors.
+.IP \(bu 4
+\&\f(CW\*(C`Module::Pluggable\*(C'\fR is a simple framework to create modules that accept
+pluggable sub-modules.
+.IP \(bu 4
+\&\f(CW\*(C`Module::Load::Conditional\*(C'\fR provides simple ways to query and possibly
+load installed modules.
+.IP \(bu 4
+\&\f(CW\*(C`Time::Piece\*(C'\fR provides an object oriented interface to time functions,
+overriding the built-ins \fBlocaltime()\fR and \fBgmtime()\fR.
+.IP \(bu 4
+\&\f(CW\*(C`IPC::Cmd\*(C'\fR helps to find and run external commands, possibly
+interactively.
+.IP \(bu 4
+\&\f(CW\*(C`File::Fetch\*(C'\fR provide a simple generic file fetching mechanism.
+.IP \(bu 4
+\&\f(CW\*(C`Log::Message\*(C'\fR and \f(CW\*(C`Log::Message::Simple\*(C'\fR are used by the log facility
+of \f(CW\*(C`CPANPLUS\*(C'\fR.
+.IP \(bu 4
+\&\f(CW\*(C`Archive::Extract\*(C'\fR is a generic archive extraction mechanism
+for \fI.tar\fR (plain, gzipped or bzipped) or \fI.zip\fR files.
+.IP \(bu 4
+\&\f(CW\*(C`CPANPLUS\*(C'\fR provides an API and a command-line tool to access the CPAN
+mirrors.
+.IP \(bu 4
+\&\f(CW\*(C`Pod::Escapes\*(C'\fR provides utilities that are useful in decoding Pod
+E<...> sequences.
+.IP \(bu 4
+\&\f(CW\*(C`Pod::Simple\*(C'\fR is now the backend for several of the Pod-related modules
+included with Perl.
+.SS "Selected Changes to Core Modules"
+.IX Subsection "Selected Changes to Core Modules"
+.ie n .IP """Attribute::Handlers""" 4
+.el .IP \f(CWAttribute::Handlers\fR 4
+.IX Item "Attribute::Handlers"
+\&\f(CW\*(C`Attribute::Handlers\*(C'\fR can now report the caller's file and line number.
+(David Feldman)
+.Sp
+All interpreted attributes are now passed as array references. (Damian
+Conway)
+.ie n .IP """B::Lint""" 4
+.el .IP \f(CWB::Lint\fR 4
+.IX Item "B::Lint"
+\&\f(CW\*(C`B::Lint\*(C'\fR is now based on \f(CW\*(C`Module::Pluggable\*(C'\fR, and so can be extended
+with plugins. (Joshua ben Jore)
+.ie n .IP """B""" 4
+.el .IP \f(CWB\fR 4
+.IX Item "B"
+It's now possible to access the lexical pragma hints (\f(CW\*(C`%^H\*(C'\fR) by using the
+method \fBB::COP::hints_hash()\fR. It returns a \f(CW\*(C`B::RHE\*(C'\fR object, which in turn
+can be used to get a hash reference via the method \fBB::RHE::HASH()\fR. (Joshua
+ben Jore)
+.ie n .IP """Thread""" 4
+.el .IP \f(CWThread\fR 4
+.IX Item "Thread"
+As the old 5005thread threading model has been removed, in favor of the
+ithreads scheme, the \f(CW\*(C`Thread\*(C'\fR module is now a compatibility wrapper, to
+be used in old code only. It has been removed from the default list of
+dynamic extensions.
+.SH "Utility Changes"
+.IX Header "Utility Changes"
+.IP "perl \-d" 4
+.IX Item "perl -d"
+The Perl debugger can now save all debugger commands for sourcing later;
+notably, it can now emulate stepping backwards, by restarting and
+rerunning all bar the last command from a saved command history.
+.Sp
+It can also display the parent inheritance tree of a given class, with the
+\&\f(CW\*(C`i\*(C'\fR command.
+.IP ptar 4
+.IX Item "ptar"
+\&\f(CW\*(C`ptar\*(C'\fR is a pure perl implementation of \f(CW\*(C`tar\*(C'\fR that comes with
+\&\f(CW\*(C`Archive::Tar\*(C'\fR.
+.IP ptardiff 4
+.IX Item "ptardiff"
+\&\f(CW\*(C`ptardiff\*(C'\fR is a small utility used to generate a diff between the contents
+of a tar archive and a directory tree. Like \f(CW\*(C`ptar\*(C'\fR, it comes with
+\&\f(CW\*(C`Archive::Tar\*(C'\fR.
+.IP shasum 4
+.IX Item "shasum"
+\&\f(CW\*(C`shasum\*(C'\fR is a command-line utility, used to print or to check SHA
+digests. It comes with the new \f(CW\*(C`Digest::SHA\*(C'\fR module.
+.IP corelist 4
+.IX Item "corelist"
+The \f(CW\*(C`corelist\*(C'\fR utility is now installed with perl (see "New modules"
+above).
+.IP "h2ph and h2xs" 4
+.IX Item "h2ph and h2xs"
+\&\f(CW\*(C`h2ph\*(C'\fR and \f(CW\*(C`h2xs\*(C'\fR have been made more robust with regard to
+"modern" C code.
+.Sp
+\&\f(CW\*(C`h2xs\*(C'\fR implements a new option \f(CW\*(C`\-\-use\-xsloader\*(C'\fR to force use of
+\&\f(CW\*(C`XSLoader\*(C'\fR even in backwards compatible modules.
+.Sp
+The handling of authors' names that had apostrophes has been fixed.
+.Sp
+Any enums with negative values are now skipped.
+.IP perlivp 4
+.IX Item "perlivp"
+\&\f(CW\*(C`perlivp\*(C'\fR no longer checks for \fI*.ph\fR files by default. Use the new \f(CW\*(C`\-a\*(C'\fR
+option to run \fIall\fR tests.
+.IP find2perl 4
+.IX Item "find2perl"
+\&\f(CW\*(C`find2perl\*(C'\fR now assumes \f(CW\*(C`\-print\*(C'\fR as a default action. Previously, it
+needed to be specified explicitly.
+.Sp
+Several bugs have been fixed in \f(CW\*(C`find2perl\*(C'\fR, regarding \f(CW\*(C`\-exec\*(C'\fR and
+\&\f(CW\*(C`\-eval\*(C'\fR. Also the options \f(CW\*(C`\-path\*(C'\fR, \f(CW\*(C`\-ipath\*(C'\fR and \f(CW\*(C`\-iname\*(C'\fR have been
+added.
+.IP config_data 4
+.IX Item "config_data"
+\&\f(CW\*(C`config_data\*(C'\fR is a new utility that comes with \f(CW\*(C`Module::Build\*(C'\fR. It
+provides a command-line interface to the configuration of Perl modules
+that use Module::Build's framework of configurability (that is,
+\&\f(CW*::ConfigData\fR modules that contain local configuration information for
+their parent modules.)
+.IP cpanp 4
+.IX Item "cpanp"
+\&\f(CW\*(C`cpanp\*(C'\fR, the CPANPLUS shell, has been added. (\f(CW\*(C`cpanp\-run\-perl\*(C'\fR, a
+helper for CPANPLUS operation, has been added too, but isn't intended for
+direct use).
+.IP cpan2dist 4
+.IX Item "cpan2dist"
+\&\f(CW\*(C`cpan2dist\*(C'\fR is a new utility that comes with CPANPLUS. It's a tool to
+create distributions (or packages) from CPAN modules.
+.IP pod2html 4
+.IX Item "pod2html"
+The output of \f(CW\*(C`pod2html\*(C'\fR has been enhanced to be more customizable via
+CSS. Some formatting problems were also corrected. (Jari Aalto)
+.SH "New Documentation"
+.IX Header "New Documentation"
+The perlpragma manpage documents how to write one's own lexical
+pragmas in pure Perl (something that is possible starting with 5.9.4).
+.PP
+The new perlglossary manpage is a glossary of terms used in the Perl
+documentation, technical and otherwise, kindly provided by O'Reilly Media,
+Inc.
+.PP
+The perlreguts manpage, courtesy of Yves Orton, describes internals of the
+Perl regular expression engine.
+.PP
+The perlreapi manpage describes the interface to the perl interpreter
+used to write pluggable regular expression engines (by Ævar Arnfjörð
+Bjarmason).
+.PP
+The perlunitut manpage is a tutorial for programming with Unicode and
+string encodings in Perl, courtesy of Juerd Waalboer.
+.PP
+A new manual page, perlunifaq (the Perl Unicode FAQ), has been added
+(Juerd Waalboer).
+.PP
+The perlcommunity manpage gives a description of the Perl community
+on the Internet and in real life. (Edgar "Trizor" Bering)
+.PP
+The CORE manual page documents the \f(CW\*(C`CORE::\*(C'\fR namespace. (Tels)
+.PP
+The long-existing feature of \f(CW\*(C`/(?{...})/\*(C'\fR regexps setting \f(CW$_\fR and \fBpos()\fR
+is now documented.
+.SH "Performance Enhancements"
+.IX Header "Performance Enhancements"
+.SS "In-place sorting"
+.IX Subsection "In-place sorting"
+Sorting arrays in place (\f(CW\*(C`@a = sort @a\*(C'\fR) is now optimized to avoid
+making a temporary copy of the array.
+.PP
+Likewise, \f(CW\*(C`reverse sort ...\*(C'\fR is now optimized to sort in reverse,
+avoiding the generation of a temporary intermediate list.
+.SS "Lexical array access"
+.IX Subsection "Lexical array access"
+Access to elements of lexical arrays via a numeric constant between 0 and
+255 is now faster. (This used to be only the case for global arrays.)
+.SS "XS-assisted SWASHGET"
+.IX Subsection "XS-assisted SWASHGET"
+Some pure-perl code that perl was using to retrieve Unicode properties and
+transliteration mappings has been reimplemented in XS.
+.SS "Constant subroutines"
+.IX Subsection "Constant subroutines"
+The interpreter internals now support a far more memory efficient form of
+inlineable constants. Storing a reference to a constant value in a symbol
+table is equivalent to a full typeglob referencing a constant subroutine,
+but using about 400 bytes less memory. This proxy constant subroutine is
+automatically upgraded to a real typeglob with subroutine if necessary.
+The approach taken is analogous to the existing space optimisation for
+subroutine stub declarations, which are stored as plain scalars in place
+of the full typeglob.
+.PP
+Several of the core modules have been converted to use this feature for
+their system dependent constants \- as a result \f(CW\*(C`use POSIX;\*(C'\fR now takes about
+200K less memory.
+.ie n .SS """PERL_DONT_CREATE_GVSV"""
+.el .SS \f(CWPERL_DONT_CREATE_GVSV\fP
+.IX Subsection "PERL_DONT_CREATE_GVSV"
+The new compilation flag \f(CW\*(C`PERL_DONT_CREATE_GVSV\*(C'\fR, introduced as an option
+in perl 5.8.8, is turned on by default in perl 5.9.3. It prevents perl
+from creating an empty scalar with every new typeglob. See perl589delta
+for details.
+.SS "Weak references are cheaper"
+.IX Subsection "Weak references are cheaper"
+Weak reference creation is now \fIO(1)\fR rather than \fIO(n)\fR, courtesy of
+Nicholas Clark. Weak reference deletion remains \fIO(n)\fR, but if deletion only
+happens at program exit, it may be skipped completely.
+.SS "\fBsort()\fP enhancements"
+.IX Subsection "sort() enhancements"
+Salvador Fandiño provided improvements to reduce the memory usage of \f(CW\*(C`sort\*(C'\fR
+and to speed up some cases.
+.SS "Memory optimisations"
+.IX Subsection "Memory optimisations"
+Several internal data structures (typeglobs, GVs, CVs, formats) have been
+restructured to use less memory. (Nicholas Clark)
+.SS "UTF\-8 cache optimisation"
+.IX Subsection "UTF-8 cache optimisation"
+The UTF\-8 caching code is now more efficient, and used more often.
+(Nicholas Clark)
+.SS "Sloppy stat on Windows"
+.IX Subsection "Sloppy stat on Windows"
+On Windows, perl's \fBstat()\fR function normally opens the file to determine
+the link count and update attributes that may have been changed through
+hard links. Setting ${^WIN32_SLOPPY_STAT} to a true value speeds up
+\&\fBstat()\fR by not performing this operation. (Jan Dubois)
+.SS "Regular expressions optimisations"
+.IX Subsection "Regular expressions optimisations"
+.IP "Engine de-recursivised" 4
+.IX Item "Engine de-recursivised"
+The regular expression engine is no longer recursive, meaning that
+patterns that used to overflow the stack will either die with useful
+explanations, or run to completion, which, since they were able to blow
+the stack before, will likely take a very long time to happen. If you were
+experiencing the occasional stack overflow (or segfault) and upgrade to
+discover that now perl apparently hangs instead, look for a degenerate
+regex. (Dave Mitchell)
+.IP "Single char char-classes treated as literals" 4
+.IX Item "Single char char-classes treated as literals"
+Classes of a single character are now treated the same as if the character
+had been used as a literal, meaning that code that uses char-classes as an
+escaping mechanism will see a speedup. (Yves Orton)
+.IP "Trie optimisation of literal string alternations" 4
+.IX Item "Trie optimisation of literal string alternations"
+Alternations, where possible, are optimised into more efficient matching
+structures. String literal alternations are merged into a trie and are
+matched simultaneously. This means that instead of O(N) time for matching
+N alternations at a given point, the new code performs in O(1) time.
+A new special variable, ${^RE_TRIE_MAXBUF}, has been added to fine-tune
+this optimization. (Yves Orton)
+.Sp
+\&\fBNote:\fR Much code exists that works around perl's historic poor
+performance on alternations. Often the tricks used to do so will disable
+the new optimisations. Hopefully the utility modules used for this purpose
+will be educated about these new optimisations.
+.IP "Aho-Corasick start-point optimisation" 4
+.IX Item "Aho-Corasick start-point optimisation"
+When a pattern starts with a trie-able alternation and there aren't
+better optimisations available, the regex engine will use Aho-Corasick
+matching to find the start point. (Yves Orton)
+.SH "Installation and Configuration Improvements"
+.IX Header "Installation and Configuration Improvements"
+.SS "Configuration improvements"
+.IX Subsection "Configuration improvements"
+.ie n .IP """\-Dusesitecustomize""" 4
+.el .IP \f(CW\-Dusesitecustomize\fR 4
+.IX Item "-Dusesitecustomize"
+Run-time customization of \f(CW@INC\fR can be enabled by passing the
+\&\f(CW\*(C`\-Dusesitecustomize\*(C'\fR flag to Configure. When enabled, this will make perl
+run \fR\f(CI$sitelibexp\fR\fI/sitecustomize.pl\fR before anything else. This script can
+then be set up to add additional entries to \f(CW@INC\fR.
+.IP "Relocatable installations" 4
+.IX Item "Relocatable installations"
+There is now Configure support for creating a relocatable perl tree. If
+you Configure with \f(CW\*(C`\-Duserelocatableinc\*(C'\fR, then the paths in \f(CW@INC\fR (and
+everything else in \f(CW%Config\fR) can be optionally located via the path of the
+perl executable.
+.Sp
+That means that, if the string \f(CW".../"\fR is found at the start of any
+path, it's substituted with the directory of $^X. So, the relocation can
+be configured on a per-directory basis, although the default with
+\&\f(CW\*(C`\-Duserelocatableinc\*(C'\fR is that everything is relocated. The initial
+install is done to the original configured prefix.
+.IP "\fBstrlcat()\fR and \fBstrlcpy()\fR" 4
+.IX Item "strlcat() and strlcpy()"
+The configuration process now detects whether \fBstrlcat()\fR and \fBstrlcpy()\fR are
+available. When they are not available, perl's own version is used (from
+Russ Allbery's public domain implementation). Various places in the perl
+interpreter now use them. (Steve Peters)
+.ie n .IP """d_pseudofork"" and ""d_printf_format_null""" 4
+.el .IP "\f(CWd_pseudofork\fR and \f(CWd_printf_format_null\fR" 4
+.IX Item "d_pseudofork and d_printf_format_null"
+A new configuration variable, available as \f(CW$Config{d_pseudofork}\fR in
+the Config module, has been added, to distinguish real \fBfork()\fR support
+from fake pseudofork used on Windows platforms.
+.Sp
+A new configuration variable, \f(CW\*(C`d_printf_format_null\*(C'\fR, has been added,
+to see if printf-like formats are allowed to be NULL.
+.IP "Configure help" 4
+.IX Item "Configure help"
+\&\f(CW\*(C`Configure \-h\*(C'\fR has been extended with the most commonly used options.
+.SS "Compilation improvements"
+.IX Subsection "Compilation improvements"
+.IP "Parallel build" 4
+.IX Item "Parallel build"
+Parallel makes should work properly now, although there may still be problems
+if \f(CW\*(C`make test\*(C'\fR is instructed to run in parallel.
+.IP "Borland's compilers support" 4
+.IX Item "Borland's compilers support"
+Building with Borland's compilers on Win32 should work more smoothly. In
+particular Steve Hay has worked to side step many warnings emitted by their
+compilers and at least one C compiler internal error.
+.IP "Static build on Windows" 4
+.IX Item "Static build on Windows"
+Perl extensions on Windows now can be statically built into the Perl DLL.
+.Sp
+Also, it's now possible to build a \f(CW\*(C`perl\-static.exe\*(C'\fR that doesn't depend
+on the Perl DLL on Win32. See the Win32 makefiles for details.
+(Vadim Konovalov)
+.IP "ppport.h files" 4
+.IX Item "ppport.h files"
+All \fIppport.h\fR files in the XS modules bundled with perl are now
+autogenerated at build time. (Marcus Holland-Moritz)
+.IP "C++ compatibility" 4
+.IX Item "C++ compatibility"
+Efforts have been made to make perl and the core XS modules compilable
+with various C++ compilers (although the situation is not perfect with
+some of the compilers on some of the platforms tested.)
+.IP "Support for Microsoft 64\-bit compiler" 4
+.IX Item "Support for Microsoft 64-bit compiler"
+Support for building perl with Microsoft's 64\-bit compiler has been
+improved. (ActiveState)
+.IP "Visual C++" 4
+.IX Item "Visual C++"
+Perl can now be compiled with Microsoft Visual C++ 2005 (and 2008 Beta 2).
+.IP "Win32 builds" 4
+.IX Item "Win32 builds"
+All win32 builds (MS-Win, WinCE) have been merged and cleaned up.
+.SS "Installation improvements"
+.IX Subsection "Installation improvements"
+.IP "Module auxiliary files" 4
+.IX Item "Module auxiliary files"
+README files and changelogs for CPAN modules bundled with perl are no
+longer installed.
+.SS "New Or Improved Platforms"
+.IX Subsection "New Or Improved Platforms"
+Perl has been reported to work on Symbian OS. See perlsymbian for more
+information.
+.PP
+Many improvements have been made towards making Perl work correctly on
+z/OS.
+.PP
+Perl has been reported to work on DragonFlyBSD and MidnightBSD.
+.PP
+Perl has also been reported to work on NexentaOS
+( http://www.gnusolaris.org/ ).
+.PP
+The VMS port has been improved. See perlvms.
+.PP
+Support for Cray XT4 Catamount/Qk has been added. See
+\&\fIhints/catamount.sh\fR in the source code distribution for more
+information.
+.PP
+Vendor patches have been merged for RedHat and Gentoo.
+.PP
+\&\fBDynaLoader::dl_unload_file()\fR now works on Windows.
+.SH "Selected Bug Fixes"
+.IX Header "Selected Bug Fixes"
+.IP "strictures in regexp-eval blocks" 4
+.IX Item "strictures in regexp-eval blocks"
+\&\f(CW\*(C`strict\*(C'\fR wasn't in effect in regexp-eval blocks (\f(CW\*(C`/(?{...})/\*(C'\fR).
+.IP "Calling \fBCORE::require()\fR" 4
+.IX Item "Calling CORE::require()"
+\&\fBCORE::require()\fR and \fBCORE::do()\fR were always parsed as \fBrequire()\fR and \fBdo()\fR
+when they were overridden. This is now fixed.
+.IP "Subscripts of slices" 4
+.IX Item "Subscripts of slices"
+You can now use a non-arrowed form for chained subscripts after a list
+slice, like in:
+.Sp
+.Vb 1
+\& ({foo => "bar"})[0]{foo}
+.Ve
+.Sp
+This used to be a syntax error; a \f(CW\*(C`\->\*(C'\fR was required.
+.ie n .IP """no warnings \*(Aqcategory\*(Aq"" works correctly with \-w" 4
+.el .IP "\f(CWno warnings \*(Aqcategory\*(Aq\fR works correctly with \-w" 4
+.IX Item "no warnings category works correctly with -w"
+Previously when running with warnings enabled globally via \f(CW\*(C`\-w\*(C'\fR, selective
+disabling of specific warning categories would actually turn off all warnings.
+This is now fixed; now \f(CW\*(C`no warnings \*(Aqio\*(Aq;\*(C'\fR will only turn off warnings in the
+\&\f(CW\*(C`io\*(C'\fR class. Previously it would erroneously turn off all warnings.
+.IP "threads improvements" 4
+.IX Item "threads improvements"
+Several memory leaks in ithreads were closed. Also, ithreads were made
+less memory-intensive.
+.Sp
+\&\f(CW\*(C`threads\*(C'\fR is now a dual-life module, also available on CPAN. It has been
+expanded in many ways. A \fBkill()\fR method is available for thread signalling.
+One can get thread status, or the list of running or joinable threads.
+.Sp
+A new \f(CW\*(C`threads\->exit()\*(C'\fR method is used to exit from the application
+(this is the default for the main thread) or from the current thread only
+(this is the default for all other threads). On the other hand, the \fBexit()\fR
+built-in now always causes the whole application to terminate. (Jerry
+D. Hedden)
+.IP "\fBchr()\fR and negative values" 4
+.IX Item "chr() and negative values"
+\&\fBchr()\fR on a negative value now gives \f(CW\*(C`\ex{FFFD}\*(C'\fR, the Unicode replacement
+character, unless when the \f(CW\*(C`bytes\*(C'\fR pragma is in effect, where the low
+eight bits of the value are used.
+.IP "PERL5SHELL and tainting" 4
+.IX Item "PERL5SHELL and tainting"
+On Windows, the PERL5SHELL environment variable is now checked for
+taintedness. (Rafael Garcia-Suarez)
+.IP "Using *FILE{IO}" 4
+.IX Item "Using *FILE{IO}"
+\&\f(CWstat()\fR and \f(CW\*(C`\-X\*(C'\fR filetests now treat *FILE{IO} filehandles like *FILE
+filehandles. (Steve Peters)
+.IP "Overloading and reblessing" 4
+.IX Item "Overloading and reblessing"
+Overloading now works when references are reblessed into another class.
+Internally, this has been implemented by moving the flag for "overloading"
+from the reference to the referent, which logically is where it should
+always have been. (Nicholas Clark)
+.IP "Overloading and UTF\-8" 4
+.IX Item "Overloading and UTF-8"
+A few bugs related to UTF\-8 handling with objects that have
+stringification overloaded have been fixed. (Nicholas Clark)
+.IP "eval memory leaks fixed" 4
+.IX Item "eval memory leaks fixed"
+Traditionally, \f(CW\*(C`eval \*(Aqsyntax error\*(Aq\*(C'\fR has leaked badly. Many (but not all)
+of these leaks have now been eliminated or reduced. (Dave Mitchell)
+.IP "Random device on Windows" 4
+.IX Item "Random device on Windows"
+In previous versions, perl would read the file \fI/dev/urandom\fR if it
+existed when seeding its random number generator. That file is unlikely
+to exist on Windows, and if it did would probably not contain appropriate
+data, so perl no longer tries to read it on Windows. (Alex Davies)
+.IP PERLIO_DEBUG 4
+.IX Item "PERLIO_DEBUG"
+The \f(CW\*(C`PERLIO_DEBUG\*(C'\fR environment variable no longer has any effect for
+setuid scripts and for scripts run with \fB\-T\fR.
+.Sp
+Moreover, with a thread-enabled perl, using \f(CW\*(C`PERLIO_DEBUG\*(C'\fR could lead to
+an internal buffer overflow. This has been fixed.
+.IP "PerlIO::scalar and read-only scalars" 4
+.IX Item "PerlIO::scalar and read-only scalars"
+PerlIO::scalar will now prevent writing to read-only scalars. Moreover,
+\&\fBseek()\fR is now supported with PerlIO::scalar\-based filehandles, the
+underlying string being zero-filled as needed. (Rafael, Jarkko Hietaniemi)
+.IP "\fBstudy()\fR and UTF\-8" 4
+.IX Item "study() and UTF-8"
+\&\fBstudy()\fR never worked for UTF\-8 strings, but could lead to false results.
+It's now a no-op on UTF\-8 data. (Yves Orton)
+.IP "Critical signals" 4
+.IX Item "Critical signals"
+The signals SIGILL, SIGBUS and SIGSEGV are now always delivered in an
+"unsafe" manner (contrary to other signals, that are deferred until the
+perl interpreter reaches a reasonably stable state; see
+"Deferred Signals (Safe Signals)" in perlipc). (Rafael)
+.ie n .IP "@INC\-hook fix" 4
+.el .IP "\f(CW@INC\fR\-hook fix" 4
+.IX Item "@INC-hook fix"
+When a module or a file is loaded through an \f(CW@INC\fR\-hook, and when this hook
+has set a filename entry in \f(CW%INC\fR, _\|_FILE_\|_ is now set for this module
+accordingly to the contents of that \f(CW%INC\fR entry. (Rafael)
+.ie n .IP """\-t"" switch fix" 4
+.el .IP "\f(CW\-t\fR switch fix" 4
+.IX Item "-t switch fix"
+The \f(CW\*(C`\-w\*(C'\fR and \f(CW\*(C`\-t\*(C'\fR switches can now be used together without messing
+up which categories of warnings are activated. (Rafael)
+.IP "Duping UTF\-8 filehandles" 4
+.IX Item "Duping UTF-8 filehandles"
+Duping a filehandle which has the \f(CW\*(C`:utf8\*(C'\fR PerlIO layer set will now
+properly carry that layer on the duped filehandle. (Rafael)
+.IP "Localisation of hash elements" 4
+.IX Item "Localisation of hash elements"
+Localizing a hash element whose key was given as a variable didn't work
+correctly if the variable was changed while the \fBlocal()\fR was in effect (as
+in \f(CW\*(C`local $h{$x}; ++$x\*(C'\fR). (Bo Lindbergh)
+.SH "New or Changed Diagnostics"
+.IX Header "New or Changed Diagnostics"
+.IP "Use of uninitialized value" 4
+.IX Item "Use of uninitialized value"
+Perl will now try to tell you the name of the variable (if any) that was
+undefined.
+.IP "Deprecated use of \fBmy()\fR in false conditional" 4
+.IX Item "Deprecated use of my() in false conditional"
+A new deprecation warning, \fIDeprecated use of \fR\f(BImy()\fR\fI in false conditional\fR,
+has been added, to warn against the use of the dubious and deprecated
+construct
+.Sp
+.Vb 1
+\& my $x if 0;
+.Ve
+.Sp
+See perldiag. Use \f(CW\*(C`state\*(C'\fR variables instead.
+.IP "!=~ should be !~" 4
+.IX Item "!=~ should be !~"
+A new warning, \f(CW\*(C`!=~ should be !~\*(C'\fR, is emitted to prevent this misspelling
+of the non-matching operator.
+.IP "Newline in left-justified string" 4
+.IX Item "Newline in left-justified string"
+The warning \fINewline in left-justified string\fR has been removed.
+.IP "Too late for ""\-T"" option" 4
+.IX Item "Too late for ""-T"" option"
+The error \fIToo late for "\-T" option\fR has been reformulated to be more
+descriptive.
+.ie n .IP """%s"" variable %s masks earlier declaration" 4
+.el .IP """%s"" variable \f(CW%s\fR masks earlier declaration" 4
+.IX Item """%s"" variable %s masks earlier declaration"
+This warning is now emitted in more consistent cases; in short, when one
+of the declarations involved is a \f(CW\*(C`my\*(C'\fR variable:
+.Sp
+.Vb 3
+\& my $x; my $x; # warns
+\& my $x; our $x; # warns
+\& our $x; my $x; # warns
+.Ve
+.Sp
+On the other hand, the following:
+.Sp
+.Vb 1
+\& our $x; our $x;
+.Ve
+.Sp
+now gives a \f(CW\*(C`"our" variable %s redeclared\*(C'\fR warning.
+.IP "\fBreaddir()\fR/\fBclosedir()\fR/etc. attempted on invalid dirhandle" 4
+.IX Item "readdir()/closedir()/etc. attempted on invalid dirhandle"
+These new warnings are now emitted when a dirhandle is used but is
+either closed or not really a dirhandle.
+.ie n .IP "Opening dirhandle/filehandle %s also as a file/directory" 4
+.el .IP "Opening dirhandle/filehandle \f(CW%s\fR also as a file/directory" 4
+.IX Item "Opening dirhandle/filehandle %s also as a file/directory"
+Two deprecation warnings have been added: (Rafael)
+.Sp
+.Vb 2
+\& Opening dirhandle %s also as a file
+\& Opening filehandle %s also as a directory
+.Ve
+.IP "Use of \-P is deprecated" 4
+.IX Item "Use of -P is deprecated"
+Perl's command-line switch \f(CW\*(C`\-P\*(C'\fR is now deprecated.
+.IP "v\-string in use/require is non-portable" 4
+.IX Item "v-string in use/require is non-portable"
+Perl will warn you against potential backwards compatibility problems with
+the \f(CW\*(C`use VERSION\*(C'\fR syntax.
+.IP "perl \-V" 4
+.IX Item "perl -V"
+\&\f(CW\*(C`perl \-V\*(C'\fR has several improvements, making it more useable from shell
+scripts to get the value of configuration variables. See perlrun for
+details.
+.SH "Changed Internals"
+.IX Header "Changed Internals"
+In general, the source code of perl has been refactored, tidied up,
+and optimized in many places. Also, memory management and allocation
+has been improved in several points.
+.PP
+When compiling the perl core with gcc, as many gcc warning flags are
+turned on as is possible on the platform. (This quest for cleanliness
+doesn't extend to XS code because we cannot guarantee the tidiness of
+code we didn't write.) Similar strictness flags have been added or
+tightened for various other C compilers.
+.SS "Reordering of SVt_* constants"
+.IX Subsection "Reordering of SVt_* constants"
+The relative ordering of constants that define the various types of \f(CW\*(C`SV\*(C'\fR
+have changed; in particular, \f(CW\*(C`SVt_PVGV\*(C'\fR has been moved before \f(CW\*(C`SVt_PVLV\*(C'\fR,
+\&\f(CW\*(C`SVt_PVAV\*(C'\fR, \f(CW\*(C`SVt_PVHV\*(C'\fR and \f(CW\*(C`SVt_PVCV\*(C'\fR. This is unlikely to make any
+difference unless you have code that explicitly makes assumptions about that
+ordering. (The inheritance hierarchy of \f(CW\*(C`B::*\*(C'\fR objects has been changed
+to reflect this.)
+.SS "Elimination of SVt_PVBM"
+.IX Subsection "Elimination of SVt_PVBM"
+Related to this, the internal type \f(CW\*(C`SVt_PVBM\*(C'\fR has been removed. This
+dedicated type of \f(CW\*(C`SV\*(C'\fR was used by the \f(CW\*(C`index\*(C'\fR operator and parts of the
+regexp engine to facilitate fast Boyer-Moore matches. Its use internally has
+been replaced by \f(CW\*(C`SV\*(C'\fRs of type \f(CW\*(C`SVt_PVGV\*(C'\fR.
+.SS "New type SVt_BIND"
+.IX Subsection "New type SVt_BIND"
+A new type \f(CW\*(C`SVt_BIND\*(C'\fR has been added, in readiness for the project to
+implement Perl 6 on 5. There deliberately is no implementation yet, and
+they cannot yet be created or destroyed.
+.SS "Removal of CPP symbols"
+.IX Subsection "Removal of CPP symbols"
+The C preprocessor symbols \f(CW\*(C`PERL_PM_APIVERSION\*(C'\fR and
+\&\f(CW\*(C`PERL_XS_APIVERSION\*(C'\fR, which were supposed to give the version number of
+the oldest perl binary-compatible (resp. source-compatible) with the
+present one, were not used, and sometimes had misleading values. They have
+been removed.
+.SS "Less space is used by ops"
+.IX Subsection "Less space is used by ops"
+The \f(CW\*(C`BASEOP\*(C'\fR structure now uses less space. The \f(CW\*(C`op_seq\*(C'\fR field has been
+removed and replaced by a single bit bit-field \f(CW\*(C`op_opt\*(C'\fR. \f(CW\*(C`op_type\*(C'\fR is now 9
+bits long. (Consequently, the \f(CW\*(C`B::OP\*(C'\fR class doesn't provide an \f(CW\*(C`seq\*(C'\fR
+method anymore.)
+.SS "New parser"
+.IX Subsection "New parser"
+perl's parser is now generated by bison (it used to be generated by
+byacc.) As a result, it seems to be a bit more robust.
+.PP
+Also, Dave Mitchell improved the lexer debugging output under \f(CW\*(C`\-DT\*(C'\fR.
+.ie n .SS "Use of ""const"""
+.el .SS "Use of \f(CWconst\fP"
+.IX Subsection "Use of const"
+Andy Lester supplied many improvements to determine which function
+parameters and local variables could actually be declared \f(CW\*(C`const\*(C'\fR to the C
+compiler. Steve Peters provided new \f(CW*_set\fR macros and reworked the core to
+use these rather than assigning to macros in LVALUE context.
+.SS Mathoms
+.IX Subsection "Mathoms"
+A new file, \fImathoms.c\fR, has been added. It contains functions that are
+no longer used in the perl core, but that remain available for binary or
+source compatibility reasons. However, those functions will not be
+compiled in if you add \f(CW\*(C`\-DNO_MATHOMS\*(C'\fR in the compiler flags.
+.ie n .SS """AvFLAGS"" has been removed"
+.el .SS "\f(CWAvFLAGS\fP has been removed"
+.IX Subsection "AvFLAGS has been removed"
+The \f(CW\*(C`AvFLAGS\*(C'\fR macro has been removed.
+.ie n .SS """av_*"" changes"
+.el .SS "\f(CWav_*\fP changes"
+.IX Subsection "av_* changes"
+The \f(CW\*(C`av_*()\*(C'\fR functions, used to manipulate arrays, no longer accept null
+\&\f(CW\*(C`AV*\*(C'\fR parameters.
+.SS "$^H and %^H"
+.IX Subsection "$^H and %^H"
+The implementation of the special variables $^H and %^H has changed, to
+allow implementing lexical pragmas in pure Perl.
+.SS "B:: modules inheritance changed"
+.IX Subsection "B:: modules inheritance changed"
+The inheritance hierarchy of \f(CW\*(C`B::\*(C'\fR modules has changed; \f(CW\*(C`B::NV\*(C'\fR now
+inherits from \f(CW\*(C`B::SV\*(C'\fR (it used to inherit from \f(CW\*(C`B::IV\*(C'\fR).
+.SS "Anonymous hash and array constructors"
+.IX Subsection "Anonymous hash and array constructors"
+The anonymous hash and array constructors now take 1 op in the optree
+instead of 3, now that pp_anonhash and pp_anonlist return a reference to
+a hash/array when the op is flagged with OPf_SPECIAL. (Nicholas Clark)
+.SH "Known Problems"
+.IX Header "Known Problems"
+There's still a remaining problem in the implementation of the lexical
+\&\f(CW$_\fR: it doesn't work inside \f(CW\*(C`/(?{...})/\*(C'\fR blocks. (See the TODO test in
+\&\fIt/op/mydef.t\fR.)
+.PP
+Stacked filetest operators won't work when the \f(CW\*(C`filetest\*(C'\fR pragma is in
+effect, because they rely on the \fBstat()\fR buffer \f(CW\*(C`_\*(C'\fR being populated, and
+filetest bypasses \fBstat()\fR.
+.SS "UTF\-8 problems"
+.IX Subsection "UTF-8 problems"
+The handling of Unicode still is unclean in several places, where it's
+dependent on whether a string is internally flagged as UTF\-8. This will
+be made more consistent in perl 5.12, but that won't be possible without
+a certain amount of backwards incompatibility.
+.SH "Platform Specific Problems"
+.IX Header "Platform Specific Problems"
+When compiled with g++ and thread support on Linux, it's reported that the
+\&\f(CW$!\fR stops working correctly. This is related to the fact that the glibc
+provides two \fBstrerror_r\fR\|(3) implementation, and perl selects the wrong
+one.
+.SH "Reporting Bugs"
+.IX Header "Reporting Bugs"
+If you find what you think is a bug, you might check the articles
+recently posted to the comp.lang.perl.misc newsgroup and the perl
+bug database at http://rt.perl.org/rt3/ . There may also be
+information at http://www.perl.org/ , the Perl Home Page.
+.PP
+If you believe you have an unreported bug, please run the \fBperlbug\fR
+program included with your release. Be sure to trim your bug down
+to a tiny but sufficient test case. Your bug report, along with the
+output of \f(CW\*(C`perl \-V\*(C'\fR, will be sent off to perlbug@perl.org to be
+analysed by the Perl porting team.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+The \fIChanges\fR file and the perl590delta to perl595delta man pages for
+exhaustive details on what changed.
+.PP
+The \fIINSTALL\fR file for how to build Perl.
+.PP
+The \fIREADME\fR file for general stuff.
+.PP
+The \fIArtistic\fR and \fICopying\fR files for copyright information.