1PERL58DELTA(1)         Perl Programmers Reference Guide         PERL58DELTA(1)
2
3
4

NAME

6       perl58delta - what is new for perl v5.8.0
7

DESCRIPTION

9       This document describes differences between the 5.6.0 release and the
10       5.8.0 release.
11
12       Many of the bug fixes in 5.8.0 were already seen in the 5.6.1
13       maintenance release since the two releases were kept closely
14       coordinated (while 5.8.0 was still called 5.7.something).
15
16       Changes that were integrated into the 5.6.1 release are marked "[561]".
17       Many of these changes have been further developed since 5.6.1 was
18       released, those are marked "[561+]".
19
20       You can see the list of changes in the 5.6.1 release (both from the
21       5.005_03 release and the 5.6.0 release) by reading perl561delta.
22

Highlights In 5.8.0

24       •   Better Unicode support
25
26       •   New IO Implementation
27
28       •   New Thread Implementation
29
30       •   Better Numeric Accuracy
31
32       •   Safe Signals
33
34       •   Many New Modules
35
36       •   More Extensive Regression Testing
37

Incompatible Changes

39   Binary Incompatibility
40       Perl 5.8 is not binary compatible with earlier releases of Perl.
41
42       You have to recompile your XS modules.
43
44       (Pure Perl modules should continue to work.)
45
46       The major reason for the discontinuity is the new IO architecture
47       called PerlIO.  PerlIO is the default configuration because without it
48       many new features of Perl 5.8 cannot be used.  In other words: you just
49       have to recompile your modules containing XS code, sorry about that.
50
51       In future releases of Perl, non-PerlIO aware XS modules may become
52       completely unsupported.  This shouldn't be too difficult for module
53       authors, however: PerlIO has been designed as a drop-in replacement (at
54       the source code level) for the stdio interface.
55
56       Depending on your platform, there are also other reasons why we decided
57       to break binary compatibility, please read on.
58
59   64-bit platforms and malloc
60       If your pointers are 64 bits wide, the Perl malloc is no longer being
61       used because it does not work well with 8-byte pointers.  Also, usually
62       the system mallocs on such platforms are much better optimized for such
63       large memory models than the Perl malloc.  Some memory-hungry Perl
64       applications like the PDL don't work well with Perl's malloc.  Finally,
65       other applications than Perl (such as mod_perl) tend to prefer the
66       system malloc.  Such platforms include Alpha and 64-bit HPPA, MIPS,
67       PPC, and Sparc.
68
69   AIX Dynaloading
70       The AIX dynaloading now uses in AIX releases 4.3 and newer the native
71       dlopen interface of AIX instead of the old emulated interface.  This
72       change will probably break backward compatibility with compiled
73       modules.  The change was made to make Perl more compliant with other
74       applications like mod_perl which are using the AIX native interface.
75
76   Attributes for "my" variables now handled at run-time
77       The "my EXPR : ATTRS" syntax now applies variable attributes at run-
78       time.  (Subroutine and "our" variables still get attributes applied at
79       compile-time.)  See attributes for additional details.  In particular,
80       however, this allows variable attributes to be useful for "tie"
81       interfaces, which was a deficiency of earlier releases.  Note that the
82       new semantics doesn't work with the Attribute::Handlers module (as of
83       version 0.76).
84
85   Socket Extension Dynamic in VMS
86       The Socket extension is now dynamically loaded instead of being
87       statically built in.  This may or may not be a problem with ancient
88       TCP/IP stacks of VMS: we do not know since we weren't able to test Perl
89       in such configurations.
90
91   IEEE-format Floating Point Default on OpenVMS Alpha
92       Perl now uses IEEE format (T_FLOAT) as the default internal floating
93       point format on OpenVMS Alpha, potentially breaking binary
94       compatibility with external libraries or existing data.  G_FLOAT is
95       still available as a configuration option.  The default on VAX
96       (D_FLOAT) has not changed.
97
98   New Unicode Semantics (no more "use utf8", almost)
99       Previously in Perl 5.6 to use Unicode one would say "use utf8" and then
100       the operations (like string concatenation) were Unicode-aware in that
101       lexical scope.
102
103       This was found to be an inconvenient interface, and in Perl 5.8 the
104       Unicode model has completely changed: now the "Unicodeness" is bound to
105       the data itself, and for most of the time "use utf8" is not needed at
106       all.  The only remaining use of "use utf8" is when the Perl script
107       itself has been written in the UTF-8 encoding of Unicode.  (UTF-8 has
108       not been made the default since there are many Perl scripts out there
109       that are using various national eight-bit character sets, which would
110       be illegal in UTF-8.)
111
112       See perluniintro for the explanation of the current model, and utf8 for
113       the current use of the utf8 pragma.
114
115   New Unicode Properties
116       Unicode scripts are now supported. Scripts are similar to (and superior
117       to) Unicode blocks. The difference between scripts and blocks is that
118       scripts are the glyphs used by a language or a group of languages,
119       while the blocks are more artificial groupings of (mostly) 256
120       characters based on the Unicode numbering.
121
122       In general, scripts are more inclusive, but not universally so. For
123       example, while the script "Latin" includes all the Latin characters and
124       their various diacritic-adorned versions, it does not include the
125       various punctuation or digits (since they are not solely "Latin").
126
127       A number of other properties are now supported, including "\p{L&}",
128       "\p{Any}" "\p{Assigned}", "\p{Unassigned}", "\p{Blank}" [561] and
129       "\p{SpacePerl}" [561] (along with their "\P{...}" versions, of course).
130       See perlunicode for details, and more additions.
131
132       The "In" or "Is" prefix to names used with the "\p{...}" and "\P{...}"
133       are now almost always optional. The only exception is that a "In"
134       prefix is required to signify a Unicode block when a block name
135       conflicts with a script name. For example, "\p{Tibetan}" refers to the
136       script, while "\p{InTibetan}" refers to the block. When there is no
137       name conflict, you can omit the "In" from the block name (e.g.
138       "\p{BraillePatterns}"), but to be safe, it's probably best to always
139       use the "In").
140
141   REF(...) Instead Of SCALAR(...)
142       A reference to a reference now stringifies as "REF(0x81485ec)" instead
143       of "SCALAR(0x81485ec)" in order to be more consistent with the return
144       value of ref().
145
146   pack/unpack D/F recycled
147       The undocumented pack/unpack template letters D/F have been recycled
148       for better use: now they stand for long double (if supported by the
149       platform) and NV (Perl internal floating point type).  (They used to be
150       aliases for d/f, but you never knew that.)
151
152   glob() now returns filenames in alphabetical order
153       The list of filenames from glob() (or <...>) is now by default sorted
154       alphabetically to be csh-compliant (which is what happened before in
155       most Unix platforms).  (bsd_glob() does still sort platform natively,
156       ASCII or EBCDIC, unless GLOB_ALPHASORT is specified.) [561]
157
158   Deprecations
159       •   The semantics of bless(REF, REF) were unclear and until someone
160           proves it to make some sense, it is forbidden.
161
162       •   The obsolete chat2 library that should never have been allowed to
163           escape the laboratory has been decommissioned.
164
165       •   Using chdir("") or chdir(undef) instead of explicit chdir() is
166           doubtful.  A failure (think chdir(some_function()) can lead into
167           unintended chdir() to the home directory, therefore this behaviour
168           is deprecated.
169
170       •   The builtin dump() function has probably outlived most of its
171           usefulness.  The core-dumping functionality will remain in future
172           available as an explicit call to CORE::dump(), but in future
173           releases the behaviour of an unqualified dump() call may change.
174
175       •   The very dusty examples in the eg/ directory have been removed.
176           Suggestions for new shiny examples welcome but the main issue is
177           that the examples need to be documented, tested and (most
178           importantly) maintained.
179
180       •   The (bogus) escape sequences \8 and \9 now give an optional warning
181           ("Unrecognized escape passed through").  There is no need to
182           \-escape any "\w" character.
183
184       •   The *glob{FILEHANDLE} is deprecated, use *glob{IO} instead.
185
186       •   The "package;" syntax ("package" without an argument) has been
187           deprecated.  Its semantics were never that clear and its
188           implementation even less so.  If you have used that feature to
189           disallow all but fully qualified variables, "use strict;" instead.
190
191       •   The unimplemented POSIX regex features [[.cc.]] and [[=c=]] are
192           still recognised but now cause fatal errors.  The previous
193           behaviour of ignoring them by default and warning if requested was
194           unacceptable since it, in a way, falsely promised that the features
195           could be used.
196
197       •   In future releases, non-PerlIO aware XS modules may become
198           completely unsupported.  Since PerlIO is a drop-in replacement for
199           stdio at the source code level, this shouldn't be that drastic a
200           change.
201
202       •   Previous versions of perl and some readings of some sections of
203           Camel III implied that the ":raw" "discipline" was the inverse of
204           ":crlf".  Turning off "clrfness" is no longer enough to make a
205           stream truly binary. So the PerlIO ":raw" layer (or "discipline",
206           to use the Camel book's older terminology) is now formally defined
207           as being equivalent to binmode(FH) - which is in turn defined as
208           doing whatever is necessary to pass each byte as-is without any
209           translation.  In particular binmode(FH) - and hence ":raw" - will
210           now turn off both CRLF and UTF-8 translation and remove other
211           layers (e.g. :encoding()) which would modify byte stream.
212
213       •   The current user-visible implementation of pseudo-hashes (the weird
214           use of the first array element) is deprecated starting from Perl
215           5.8.0 and will be removed in Perl 5.10.0, and the feature will be
216           implemented differently.  Not only is the current interface rather
217           ugly, but the current implementation slows down normal array and
218           hash use quite noticeably. The "fields" pragma interface will
219           remain available.  The restricted hashes interface is expected to
220           be the replacement interface (see Hash::Util).  If your existing
221           programs depends on the underlying implementation, consider using
222           Class::PseudoHash from CPAN.
223
224       •   The syntaxes "@a->[...]" and  "%h->{...}" have now been deprecated.
225
226       •   After years of trying, suidperl is considered to be too complex to
227           ever be considered truly secure.  The suidperl functionality is
228           likely to be removed in a future release.
229
230       •   The 5.005 threads model (module "Thread") is deprecated and
231           expected to be removed in Perl 5.10.  Multithreaded code should be
232           migrated to the new ithreads model (see threads, threads::shared
233           and perlthrtut).
234
235       •   The long deprecated uppercase aliases for the string comparison
236           operators (EQ, NE, LT, LE, GE, GT) have now been removed.
237
238       •   The tr///C and tr///U features have been removed and will not
239           return; the interface was a mistake.  Sorry about that.  For
240           similar functionality, see pack('U0', ...) and pack('C0', ...).
241           [561]
242
243       •   Earlier Perls treated "sub foo (@bar)" as equivalent to "sub foo
244           (@)".  The prototypes are now checked better at compile-time for
245           invalid syntax.  An optional warning is generated ("Illegal
246           character in prototype...")  but this may be upgraded to a fatal
247           error in a future release.
248
249       •   The "exec LIST" and "system LIST" operations now produce warnings
250           on tainted data and in some future release they will produce fatal
251           errors.
252
253       •   The existing behaviour when localising tied arrays and hashes is
254           wrong, and will be changed in a future release, so do not rely on
255           the existing behaviour. See "Localising Tied Arrays and Hashes Is
256           Broken".
257

Core Enhancements

259   Unicode Overhaul
260       Unicode in general should be now much more usable than in Perl 5.6.0
261       (or even in 5.6.1).  Unicode can be used in hash keys, Unicode in
262       regular expressions should work now, Unicode in tr/// should work now,
263       Unicode in I/O should work now.  See perluniintro for introduction and
264       perlunicode for details.
265
266       •   The Unicode Character Database coming with Perl has been upgraded
267           to Unicode 3.2.0.  For more information, see
268           http://www.unicode.org/ .  [561+] (5.6.1 has UCD 3.0.1.)
269
270       •   For developers interested in enhancing Perl's Unicode capabilities:
271           almost all the UCD files are included with the Perl distribution in
272           the lib/unicore subdirectory.  The most notable omission, for space
273           considerations, is the Unihan database.
274
275       •   The properties \p{Blank} and \p{SpacePerl} have been added. "Blank"
276           is like C isblank(), that is, it contains only "horizontal
277           whitespace" (the space character is, the newline isn't), and the
278           "SpacePerl" is the Unicode equivalent of "\s" (\p{Space} isn't,
279           since that includes the vertical tabulator character, whereas "\s"
280           doesn't.)
281
282           See "New Unicode Properties" earlier in this document for
283           additional information on changes with Unicode properties.
284
285   PerlIO is Now The Default
286       •   IO is now by default done via PerlIO rather than system's "stdio".
287           PerlIO allows "layers" to be "pushed" onto a file handle to alter
288           the handle's behaviour.  Layers can be specified at open time via
289           3-arg form of open:
290
291              open($fh,'>:crlf :utf8', $path) || ...
292
293           or on already opened handles via extended "binmode":
294
295              binmode($fh,':encoding(iso-8859-7)');
296
297           The built-in layers are: unix (low level read/write), stdio (as in
298           previous Perls), perlio (re-implementation of stdio buffering in a
299           portable manner), crlf (does CRLF <=> "\n" translation as on Win32,
300           but available on any platform).  A mmap layer may be available if
301           platform supports it (mostly Unixes).
302
303           Layers to be applied by default may be specified via the 'open'
304           pragma.
305
306           See "Installation and Configuration Improvements" for the effects
307           of PerlIO on your architecture name.
308
309       •   If your platform supports fork(), you can use the list form of
310           "open" for pipes.  For example:
311
312               open KID_PS, "-|", "ps", "aux" or die $!;
313
314           forks the ps(1) command (without spawning a shell, as there are
315           more than three arguments to open()), and reads its standard output
316           via the "KID_PS" filehandle.  See perlipc.
317
318       •   File handles can be marked as accepting Perl's internal encoding of
319           Unicode (UTF-8 or UTF-EBCDIC depending on platform) by a pseudo
320           layer ":utf8" :
321
322              open($fh,">:utf8","Uni.txt");
323
324           Note for EBCDIC users: the pseudo layer ":utf8" is erroneously
325           named for you since it's not UTF-8 what you will be getting but
326           instead UTF-EBCDIC.  See perlunicode, utf8, and
327           http://www.unicode.org/reports/tr16/ for more information.  In
328           future releases this naming may change.  See perluniintro for more
329           information about UTF-8.
330
331       •   If your environment variables (LC_ALL, LC_CTYPE, LANG) look like
332           you want to use UTF-8 (any of the variables match "/utf-?8/i"),
333           your STDIN, STDOUT, STDERR handles and the default open layer (see
334           open) are marked as UTF-8.  (This feature, like other new features
335           that combine Unicode and I/O, work only if you are using PerlIO,
336           but that's the default.)
337
338           Note that after this Perl really does assume that everything is
339           UTF-8: for example if some input handle is not, Perl will probably
340           very soon complain about the input data like this "Malformed UTF-8
341           ..." since any old eight-bit data is not legal UTF-8.
342
343           Note for code authors: if you want to enable your users to use
344           UTF-8 as their default encoding  but in your code still have eight-
345           bit I/O streams (such as images or zip files), you need to
346           explicitly open() or binmode() with ":bytes" (see "open" in
347           perlfunc and "binmode" in perlfunc), or you can just use
348           binmode(FH) (nice for pre-5.8.0 backward compatibility).
349
350       •   File handles can translate character encodings from/to Perl's
351           internal Unicode form on read/write via the ":encoding()" layer.
352
353       •   File handles can be opened to "in memory" files held in Perl
354           scalars via:
355
356              open($fh,'>', \$variable) || ...
357
358       •   Anonymous temporary files are available without need to 'use
359           FileHandle' or other module via
360
361              open($fh,"+>", undef) || ...
362
363           That is a literal undef, not an undefined value.
364
365   ithreads
366       The new interpreter threads ("ithreads" for short) implementation of
367       multithreading, by Arthur Bergman, replaces the old "5.005 threads"
368       implementation.  In the ithreads model any data sharing between threads
369       must be explicit, as opposed to the model where data sharing was
370       implicit.  See threads and threads::shared, and perlthrtut.
371
372       As a part of the ithreads implementation Perl will also use any
373       necessary and detectable reentrant libc interfaces.
374
375   Restricted Hashes
376       A restricted hash is restricted to a certain set of keys, no keys
377       outside the set can be added.  Also individual keys can be restricted
378       so that the key cannot be deleted and the value cannot be changed.  No
379       new syntax is involved: the Hash::Util module is the interface.
380
381   Safe Signals
382       Perl used to be fragile in that signals arriving at inopportune moments
383       could corrupt Perl's internal state.  Now Perl postpones handling of
384       signals until it's safe (between opcodes).
385
386       This change may have surprising side effects because signals no longer
387       interrupt Perl instantly.  Perl will now first finish whatever it was
388       doing, like finishing an internal operation (like sort()) or an
389       external operation (like an I/O operation), and only then look at any
390       arrived signals (and before starting the next operation).  No more
391       corrupt internal state since the current operation is always finished
392       first, but the signal may take more time to get heard.  Note that
393       breaking out from potentially blocking operations should still work,
394       though.
395
396   Understanding of Numbers
397       In general a lot of fixing has happened in the area of Perl's
398       understanding of numbers, both integer and floating point.  Since in
399       many systems the standard number parsing functions like strtoul() and
400       atof() seem to have bugs, Perl tries to work around their deficiencies.
401       This results hopefully in more accurate numbers.
402
403       Perl now tries internally to use integer values in numeric conversions
404       and basic arithmetics (+ - * /) if the arguments are integers, and
405       tries also to keep the results stored internally as integers.  This
406       change leads to often slightly faster and always less lossy
407       arithmetics. (Previously Perl always preferred floating point numbers
408       in its math.)
409
410   Arrays now always interpolate into double-quoted strings [561]
411       In double-quoted strings, arrays now interpolate, no matter what.  The
412       behavior in earlier versions of perl 5 was that arrays would
413       interpolate into strings if the array had been mentioned before the
414       string was compiled, and otherwise Perl would raise a fatal compile-
415       time error.  In versions 5.000 through 5.003, the error was
416
417               Literal @example now requires backslash
418
419       In versions 5.004_01 through 5.6.0, the error was
420
421               In string, @example now must be written as \@example
422
423       The idea here was to get people into the habit of writing
424       "fred\@example.com" when they wanted a literal "@" sign, just as they
425       have always written "Give me back my \$5" when they wanted a literal
426       "$" sign.
427
428       Starting with 5.6.1, when Perl now sees an "@" sign in a double-quoted
429       string, it always attempts to interpolate an array, regardless of
430       whether or not the array has been used or declared already.  The fatal
431       error has been downgraded to an optional warning:
432
433               Possible unintended interpolation of @example in string
434
435       This warns you that "fred@example.com" is going to turn into "fred.com"
436       if you don't backslash the "@".  See
437       http://perl.plover.com/at-error.html for more details about the history
438       here.
439
440   Miscellaneous Changes
441       •   AUTOLOAD is now lvaluable, meaning that you can add the :lvalue
442           attribute to AUTOLOAD subroutines and you can assign to the
443           AUTOLOAD return value.
444
445       •   The $Config{byteorder} (and corresponding BYTEORDER in config.h)
446           was previously wrong in platforms if sizeof(long) was 4, but
447           sizeof(IV) was 8.  The byteorder was only sizeof(long) bytes long
448           (1234 or 4321), but now it is correctly sizeof(IV) bytes long,
449           (12345678 or 87654321).  (This problem didn't affect Windows
450           platforms.)
451
452           Also, $Config{byteorder} is now computed dynamically--this is more
453           robust with "fat binaries" where an executable image contains
454           binaries for more than one binary platform, and when cross-
455           compiling.
456
457       •   "perl -d:Module=arg,arg,arg" now works (previously one couldn't
458           pass in multiple arguments.)
459
460       •   "do" followed by a bareword now ensures that this bareword isn't a
461           keyword (to avoid a bug where "do q(foo.pl)" tried to call a
462           subroutine called "q").  This means that for example instead of "do
463           format()" you must write "do &format()".
464
465       •   The builtin dump() now gives an optional warning "dump() better
466           written as CORE::dump()", meaning that by default dump(...) is
467           resolved as the builtin dump() which dumps core and aborts, not as
468           (possibly) user-defined "sub dump".  To call the latter, qualify
469           the call as &dump(...).  (The whole dump() feature is to considered
470           deprecated, and possibly removed/changed in future releases.)
471
472chomp() and chop() are now overridable.  Note, however, that their
473           prototype (as given by prototype("CORE::chomp") is undefined,
474           because it cannot be expressed and therefore one cannot really
475           write replacements to override these builtins.
476
477       •   END blocks are now run even if you exit/die in a BEGIN block.
478           Internally, the execution of END blocks is now controlled by
479           PL_exit_flags & PERL_EXIT_DESTRUCT_END. This enables the new
480           behaviour for Perl embedders. This will default in 5.10. See
481           perlembed.
482
483       •   Formats now support zero-padded decimal fields.
484
485       •   Although "you shouldn't do that", it was possible to write code
486           that depends on Perl's hashed key order (Data::Dumper does this).
487           The new algorithm "One-at-a-Time" produces a different hashed key
488           order.  More details are in "Performance Enhancements".
489
490       •   lstat(FILEHANDLE) now gives a warning because the operation makes
491           no sense.  In future releases this may become a fatal error.
492
493       •   Spurious syntax errors generated in certain situations, when glob()
494           caused File::Glob to be loaded for the first time, have been fixed.
495           [561]
496
497       •   Lvalue subroutines can now return "undef" in list context.
498           However, the lvalue subroutine feature still remains experimental.
499           [561+]
500
501       •   A lost warning "Can't declare ... dereference in my" has been
502           restored (Perl had it earlier but it became lost in later
503           releases.)
504
505       •   A new special regular expression variable has been introduced: $^N,
506           which contains the most-recently closed group (submatch).
507
508       •   "no Module;" does not produce an error even if Module does not have
509           an unimport() method.  This parallels the behavior of "use" vis-a-
510           vis "import". [561]
511
512       •   The numerical comparison operators return "undef" if either operand
513           is a NaN.  Previously the behaviour was unspecified.
514
515       •   "our" can now have an experimental optional attribute "unique" that
516           affects how global variables are shared among multiple
517           interpreters, see "our" in perlfunc.
518
519       •   The following builtin functions are now overridable: each(),
520           keys(), pop(), push(), shift(), splice(), unshift(). [561]
521
522       •   "pack() / unpack()" can now group template letters with "()" and
523           then apply repetition/count modifiers on the groups.
524
525       •   "pack() / unpack()" can now process the Perl internal numeric
526           types: IVs, UVs, NVs-- and also long doubles, if supported by the
527           platform.  The template letters are "j", "J", "F", and "D".
528
529       •   "pack('U0a*', ...)" can now be used to force a string to UTF-8.
530
531       •   my __PACKAGE__ $obj now works. [561]
532
533POSIX::sleep() now returns the number of unslept seconds (as the
534           POSIX standard says), as opposed to CORE::sleep() which returns the
535           number of slept seconds.
536
537printf() and sprintf() now support parameter reordering using the
538           "%\d+\$" and "*\d+\$" syntaxes.  For example
539
540               printf "%2\$s %1\$s\n", "foo", "bar";
541
542           will print "bar foo\n".  This feature helps in writing
543           internationalised software, and in general when the order of the
544           parameters can vary.
545
546       •   The (\&) prototype now works properly. [561]
547
548       •   prototype(\[$@%&]) is now available to implicitly create references
549           (useful for example if you want to emulate the tie() interface).
550
551       •   A new command-line option, "-t" is available.  It is the little
552           brother of "-T": instead of dying on taint violations, lexical
553           warnings are given.  This is only meant as a temporary debugging
554           aid while securing the code of old legacy applications.  This is
555           not a substitute for -T.
556
557       •   In other taint news, the "exec LIST" and "system LIST" have now
558           been considered too risky (think "exec @ARGV": it can start any
559           program with any arguments), and now the said forms cause a warning
560           under lexical warnings.  You should carefully launder the arguments
561           to guarantee their validity.  In future releases of Perl the forms
562           will become fatal errors so consider starting laundering now.
563
564       •   Tied hash interfaces are now required to have the EXISTS and DELETE
565           methods (either own or inherited).
566
567       •   If tr/// is just counting characters, it doesn't attempt to modify
568           its target.
569
570untie() will now call an UNTIE() hook if it exists.  See perltie
571           for details. [561]
572
573       •   "utime" in perlfunc now supports "utime undef, undef, @files" to
574           change the file timestamps to the current time.
575
576       •   The rules for allowing underscores (underbars) in numeric constants
577           have been relaxed and simplified: now you can have an underscore
578           simply between digits.
579
580       •   Rather than relying on C's argv[0] (which may not contain a full
581           pathname) where possible $^X is now set by asking the operating
582           system.  (eg by reading /proc/self/exe on Linux, /proc/curproc/file
583           on FreeBSD)
584
585       •   A new variable, "${^TAINT}", indicates whether taint mode is
586           enabled.
587
588       •   You can now override the readline() builtin, and this overrides
589           also the <FILEHANDLE> angle bracket operator.
590
591       •   The command-line options -s and -F are now recognized on the
592           shebang (#!) line.
593
594       •   Use of the "/c" match modifier without an accompanying "/g"
595           modifier elicits a new warning: "Use of /c modifier is meaningless
596           without /g".
597
598           Use of "/c" in substitutions, even with "/g", elicits "Use of /c
599           modifier is meaningless in s///".
600
601           Use of "/g" with "split" elicits "Use of /g modifier is meaningless
602           in split".
603
604       •   Support for the "CLONE" special subroutine had been added.  With
605           ithreads, when a new thread is created, all Perl data is cloned,
606           however non-Perl data cannot be cloned automatically.  In "CLONE"
607           you can do whatever you need to do, like for example handle the
608           cloning of non-Perl data, if necessary.  "CLONE" will be executed
609           once for every package that has it defined or inherited.  It will
610           be called in the context of the new thread, so all modifications
611           are made in the new area.
612
613           See perlmod
614

Modules and Pragmata

616   New Modules and Pragmata
617       •   "Attribute::Handlers", originally by Damian Conway and now
618           maintained by Arthur Bergman, allows a class to define attribute
619           handlers.
620
621               package MyPack;
622               use Attribute::Handlers;
623               sub Wolf :ATTR(SCALAR) { print "howl!\n" }
624
625               # later, in some package using or inheriting from MyPack...
626
627               my MyPack $Fluffy : Wolf; # the attribute handler Wolf will be called
628
629           Both variables and routines can have attribute handlers.  Handlers
630           can be specific to type (SCALAR, ARRAY, HASH, or CODE), or specific
631           to the exact compilation phase (BEGIN, CHECK, INIT, or END).  See
632           Attribute::Handlers.
633
634       •   "B::Concise", by Stephen McCamant, is a new compiler backend for
635           walking the Perl syntax tree, printing concise info about ops.  The
636           output is highly customisable.  See B::Concise. [561+]
637
638       •   The new bignum, bigint, and bigrat pragmas, by Tels, implement
639           transparent bignum support (using the Math::BigInt, Math::BigFloat,
640           and Math::BigRat backends).
641
642       •   "Class::ISA", by Sean Burke, is a module for reporting the search
643           path for a class's ISA tree.  See Class::ISA.
644
645       •   "Cwd" now has a split personality: if possible, an XS extension is
646           used, (this will hopefully be faster, more secure, and more robust)
647           but if not possible, the familiar Perl implementation is used.
648
649       •   "Devel::PPPort", originally by Kenneth Albanowski and now
650           maintained by Paul Marquess, has been added.  It is primarily used
651           by "h2xs" to enhance portability of XS modules between different
652           versions of Perl.  See Devel::PPPort.
653
654       •   "Digest", frontend module for calculating digests (checksums), from
655           Gisle Aas, has been added.  See Digest.
656
657       •   "Digest::MD5" for calculating MD5 digests (checksums) as defined in
658           RFC 1321, from Gisle Aas, has been added.  See Digest::MD5.
659
660               use Digest::MD5 'md5_hex';
661
662               $digest = md5_hex("Thirsty Camel");
663
664               print $digest, "\n"; # 01d19d9d2045e005c3f1b80e8b164de1
665
666           NOTE: the "MD5" backward compatibility module is deliberately not
667           included since its further use is discouraged.
668
669           See also PerlIO::via::QuotedPrint.
670
671       •   "Encode", originally by Nick Ing-Simmons and now maintained by Dan
672           Kogai, provides a mechanism to translate between different
673           character encodings.  Support for Unicode, ISO-8859-1, and ASCII
674           are compiled in to the module.  Several other encodings (like the
675           rest of the ISO-8859, CP*/Win*, Mac, KOI8-R, three variants EBCDIC,
676           Chinese, Japanese, and Korean encodings) are included and can be
677           loaded at runtime.  (For space considerations, the largest Chinese
678           encodings have been separated into their own CPAN module,
679           Encode::HanExtra, which Encode will use if available).  See Encode.
680
681           Any encoding supported by Encode module is also available to the
682           ":encoding()" layer if PerlIO is used.
683
684       •   "Hash::Util" is the interface to the new restricted hashes feature.
685           (Implemented by Jeffrey Friedl, Nick Ing-Simmons, and Michael
686           Schwern.)  See Hash::Util.
687
688       •   "I18N::Langinfo" can be used to query locale information.  See
689           I18N::Langinfo.
690
691       •   "I18N::LangTags", by Sean Burke, has functions for dealing with
692           RFC3066-style language tags.  See I18N::LangTags.
693
694       •   "ExtUtils::Constant", by Nicholas Clark, is a new tool for
695           extension writers for generating XS code to import C header
696           constants.  See ExtUtils::Constant.
697
698       •   "Filter::Simple", by Damian Conway, is an easy-to-use frontend to
699           Filter::Util::Call.  See Filter::Simple.
700
701               # in MyFilter.pm:
702
703               package MyFilter;
704
705               use Filter::Simple sub {
706                   while (my ($from, $to) = splice @_, 0, 2) {
707                           s/$from/$to/g;
708                   }
709               };
710
711               1;
712
713               # in user's code:
714
715               use MyFilter qr/red/ => 'green';
716
717               print "red\n";   # this code is filtered, will print "green\n"
718               print "bored\n"; # this code is filtered, will print "bogreen\n"
719
720               no MyFilter;
721
722               print "red\n";   # this code is not filtered, will print "red\n"
723
724       •   "File::Temp", by Tim Jenness, allows one to create temporary files
725           and directories in an easy, portable, and secure way.  See
726           File::Temp.  [561+]
727
728       •   "Filter::Util::Call", by Paul Marquess, provides you with the
729           framework to write source filters in Perl.  For most uses, the
730           frontend Filter::Simple is to be preferred.  See
731           Filter::Util::Call.
732
733       •   "if", by Ilya Zakharevich, is a new pragma for conditional
734           inclusion of modules.
735
736       •   libnet, by Graham Barr, is a collection of perl5 modules related to
737           network programming.  See Net::FTP, Net::NNTP, Net::Ping (not part
738           of libnet, but related), Net::POP3, Net::SMTP, and Net::Time.
739
740           Perl installation leaves libnet unconfigured; use libnetcfg to
741           configure it.
742
743       •   "List::Util", by Graham Barr, is a selection of general-utility
744           list subroutines, such as sum(), min(), first(), and shuffle().
745           See List::Util.
746
747       •   "Locale::Constants", "Locale::Country", "Locale::Currency"
748           "Locale::Language", and Locale::Script, by Neil Bowers, have been
749           added.  They provide the codes for various locale standards, such
750           as "fr" for France, "usd" for US Dollar, and "ja" for Japanese.
751
752               use Locale::Country;
753
754               $country = code2country('jp');               # $country gets 'Japan'
755               $code    = country2code('Norway');           # $code gets 'no'
756
757           See Locale::Constants, Locale::Country, Locale::Currency, and
758           Locale::Language.
759
760       •   "Locale::Maketext", by Sean Burke, is a localization framework.
761           See Locale::Maketext, and Locale::Maketext::TPJ13.  The latter is
762           an article about software localization, originally published in The
763           Perl Journal #13, and republished here with kind permission.
764
765       •   "Math::BigRat" for big rational numbers, to accompany Math::BigInt
766           and Math::BigFloat, from Tels.  See Math::BigRat.
767
768       •   "Memoize" can make your functions faster by trading space for time,
769           from Mark-Jason Dominus.  See Memoize.
770
771       •   "MIME::Base64", by Gisle Aas, allows you to encode data in base64,
772           as defined in RFC 2045 - MIME (Multipurpose Internet Mail
773           Extensions).
774
775               use MIME::Base64;
776
777               $encoded = encode_base64('Aladdin:open sesame');
778               $decoded = decode_base64($encoded);
779
780               print $encoded, "\n"; # "QWxhZGRpbjpvcGVuIHNlc2FtZQ=="
781
782           See MIME::Base64.
783
784       •   "MIME::QuotedPrint", by Gisle Aas, allows you to encode data in
785           quoted-printable encoding, as defined in RFC 2045 - MIME
786           (Multipurpose Internet Mail Extensions).
787
788               use MIME::QuotedPrint;
789
790               $encoded = encode_qp("\xDE\xAD\xBE\xEF");
791               $decoded = decode_qp($encoded);
792
793               print $encoded, "\n"; # "=DE=AD=BE=EF\n"
794               print $decoded, "\n"; # "\xDE\xAD\xBE\xEF\n"
795
796           See also PerlIO::via::QuotedPrint.
797
798       •   "NEXT", by Damian Conway, is a pseudo-class for method redispatch.
799           See NEXT.
800
801       •   "open" is a new pragma for setting the default I/O layers for
802           open().
803
804       •   "PerlIO::scalar", by Nick Ing-Simmons, provides the implementation
805           of IO to "in memory" Perl scalars as discussed above.  It also
806           serves as an example of a loadable PerlIO layer.  Other future
807           possibilities include PerlIO::Array and PerlIO::Code.  See
808           PerlIO::scalar.
809
810       •   "PerlIO::via", by Nick Ing-Simmons, acts as a PerlIO layer and
811           wraps PerlIO layer functionality provided by a class (typically
812           implemented in Perl code).
813
814       •   "PerlIO::via::QuotedPrint", by Elizabeth Mattijsen, is an example
815           of a "PerlIO::via" class:
816
817               use PerlIO::via::QuotedPrint;
818               open($fh,">:via(QuotedPrint)",$path);
819
820           This will automatically convert everything output to $fh to Quoted-
821           Printable.  See PerlIO::via and PerlIO::via::QuotedPrint.
822
823       •   "Pod::ParseLink", by Russ Allbery, has been added, to parse L<>
824           links in pods as described in the new perlpodspec.
825
826       •   "Pod::Text::Overstrike", by Joe Smith, has been added.  It converts
827           POD data to formatted overstrike text.  See Pod::Text::Overstrike.
828           [561+]
829
830       •   "Scalar::Util" is a selection of general-utility scalar
831           subroutines, such as blessed(), reftype(), and tainted().  See
832           Scalar::Util.
833
834       •   "sort" is a new pragma for controlling the behaviour of sort().
835
836       •   "Storable" gives persistence to Perl data structures by allowing
837           the storage and retrieval of Perl data to and from files in a fast
838           and compact binary format.  Because in effect Storable does
839           serialisation of Perl data structures, with it you can also clone
840           deep, hierarchical datastructures.  Storable was originally created
841           by Raphael Manfredi, but it is now maintained by Abhijit Menon-Sen.
842           Storable has been enhanced to understand the two new hash features,
843           Unicode keys and restricted hashes.  See Storable.
844
845       •   "Switch", by Damian Conway, has been added.  Just by saying
846
847               use Switch;
848
849           you have "switch" and "case" available in Perl.
850
851               use Switch;
852
853               switch ($val) {
854
855                           case 1          { print "number 1" }
856                           case "a"        { print "string a" }
857                           case [1..10,42] { print "number in list" }
858                           case (@array)   { print "number in list" }
859                           case /\w+/      { print "pattern" }
860                           case qr/\w+/    { print "pattern" }
861                           case (%hash)    { print "entry in hash" }
862                           case (\%hash)   { print "entry in hash" }
863                           case (\&sub)    { print "arg to subroutine" }
864                           else            { print "previous case not true" }
865               }
866
867           See Switch.
868
869       •   "Test::More", by Michael Schwern, is yet another framework for
870           writing test scripts, more extensive than Test::Simple.  See
871           Test::More.
872
873       •   "Test::Simple", by Michael Schwern, has basic utilities for writing
874           tests.   See Test::Simple.
875
876       •   "Text::Balanced", by Damian Conway, has been added, for extracting
877           delimited text sequences from strings.
878
879               use Text::Balanced 'extract_delimited';
880
881               ($a, $b) = extract_delimited("'never say never', he never said", "'", '');
882
883           $a will be "'never say never'", $b will be ', he never said'.
884
885           In addition to extract_delimited(), there are also
886           extract_bracketed(), extract_quotelike(), extract_codeblock(),
887           extract_variable(), extract_tagged(), extract_multiple(),
888           gen_delimited_pat(), and gen_extract_tagged().  With these, you can
889           implement rather advanced parsing algorithms.  See Text::Balanced.
890
891       •   "threads", by Arthur Bergman, is an interface to interpreter
892           threads.  Interpreter threads (ithreads) is the new thread model
893           introduced in Perl 5.6 but only available as an internal interface
894           for extension writers (and for Win32 Perl for fork() emulation).
895           See threads, threads::shared, and perlthrtut.
896
897       •   "threads::shared", by Arthur Bergman, allows data sharing for
898           interpreter threads.  See threads::shared.
899
900       •   "Tie::File", by Mark-Jason Dominus, associates a Perl array with
901           the lines of a file.  See Tie::File.
902
903       •   "Tie::Memoize", by Ilya Zakharevich, provides on-demand loaded
904           hashes.  See Tie::Memoize.
905
906       •   "Tie::RefHash::Nestable", by Edward Avis, allows storing hash
907           references (unlike the standard Tie::RefHash)  The module is
908           contained within Tie::RefHash.  See Tie::RefHash.
909
910       •   "Time::HiRes", by Douglas E. Wegscheid, provides high resolution
911           timing (ualarm, usleep, and gettimeofday).  See Time::HiRes.
912
913       •   "Unicode::UCD" offers a querying interface to the Unicode Character
914           Database.  See Unicode::UCD.
915
916       •   "Unicode::Collate", by SADAHIRO Tomoyuki, implements the UCA
917           (Unicode Collation Algorithm) for sorting Unicode strings.  See
918           Unicode::Collate.
919
920       •   "Unicode::Normalize", by SADAHIRO Tomoyuki, implements the various
921           Unicode normalization forms.  See Unicode::Normalize.
922
923       •   "XS::APItest", by Tim Jenness, is a test extension that exercises
924           XS APIs.  Currently only printf() is tested: how to output various
925           basic data types from XS.
926
927       •   "XS::Typemap", by Tim Jenness, is a test extension that exercises
928           XS typemaps.  Nothing gets installed, but the code is worth
929           studying for extension writers.
930
931   Updated And Improved Modules and Pragmata
932       •   The following independently supported modules have been updated to
933           the newest versions from CPAN: CGI, CPAN, DB_File, File::Spec,
934           File::Temp, Getopt::Long, Math::BigFloat, Math::BigInt, the
935           podlators bundle (Pod::Man, Pod::Text), Pod::LaTeX [561+],
936           Pod::Parser, Storable, Term::ANSIColor, Test, Text-Tabs+Wrap.
937
938attributes::reftype() now works on tied arguments.
939
940       •   AutoLoader can now be disabled with "no AutoLoader;".
941
942       •   B::Deparse has been significantly enhanced by Robin Houston.  It
943           can now deparse almost all of the standard test suite (so that the
944           tests still succeed).  There is a make target "test.deparse" for
945           trying this out.
946
947       •   Carp now has better interface documentation, and the @CARP_NOT
948           interface has been added to get optional control over where errors
949           are reported independently of @ISA, by Ben Tilly.
950
951       •   Class::Struct can now define the classes in compile time.
952
953       •   Class::Struct now assigns the array/hash element if the accessor is
954           called with an array/hash element as the sole argument.
955
956       •   The return value of Cwd::fastcwd() is now tainted.
957
958       •   Data::Dumper now has an option to sort hashes.
959
960       •   Data::Dumper now has an option to dump code references using
961           B::Deparse.
962
963       •   DB_File now supports newer Berkeley DB versions, among other
964           improvements.
965
966       •   Devel::Peek now has an interface for the Perl memory statistics
967           (this works only if you are using perl's malloc, and if you have
968           compiled with debugging).
969
970       •   The English module can now be used without the infamous performance
971           hit by saying
972
973                   use English '-no_match_vars';
974
975           (Assuming, of course, that you don't need the troublesome variables
976           "$`", $&, or "$'".)  Also, introduced @LAST_MATCH_START and
977           @LAST_MATCH_END English aliases for "@-" and "@+".
978
979       •   ExtUtils::MakeMaker has been significantly cleaned up and fixed.
980           The enhanced version has also been backported to earlier releases
981           of Perl and submitted to CPAN so that the earlier releases can
982           enjoy the fixes.
983
984       •   The arguments of WriteMakefile() in Makefile.PL are now checked for
985           sanity much more carefully than before.  This may cause new
986           warnings when modules are being installed.  See ExtUtils::MakeMaker
987           for more details.
988
989       •   ExtUtils::MakeMaker now uses File::Spec internally, which hopefully
990           leads to better portability.
991
992       •   Fcntl, Socket, and Sys::Syslog have been rewritten by Nicholas
993           Clark to use the new-style constant dispatch section (see
994           ExtUtils::Constant).  This means that they will be more robust and
995           hopefully faster.
996
997       •   File::Find now chdir()s correctly when chasing symbolic links.
998           [561]
999
1000       •   File::Find now has pre- and post-processing callbacks.  It also
1001           correctly changes directories when chasing symbolic links.
1002           Callbacks (naughtily) exiting with "next;" instead of "return;" now
1003           work.
1004
1005       •   File::Find is now (again) reentrant.  It also has been made more
1006           portable.
1007
1008       •   The warnings issued by File::Find now belong to their own category.
1009           You can enable/disable them with "use/no warnings 'File::Find';".
1010
1011File::Glob::glob() has been renamed to File::Glob::bsd_glob()
1012           because the name clashes with the builtin glob().  The older name
1013           is still available for compatibility, but is deprecated. [561]
1014
1015       •   File::Glob now supports "GLOB_LIMIT" constant to limit the size of
1016           the returned list of filenames.
1017
1018       •   IPC::Open3 now allows the use of numeric file descriptors.
1019
1020       •   IO::Socket now has an atmark() method, which returns true if the
1021           socket is positioned at the out-of-band mark.  The method is also
1022           exportable as a sockatmark() function.
1023
1024       •   IO::Socket::INET failed to open the specified port if the service
1025           name was not known.  It now correctly uses the supplied port number
1026           as is. [561]
1027
1028       •   IO::Socket::INET has support for the ReusePort option (if your
1029           platform supports it).  The Reuse option now has an alias,
1030           ReuseAddr.  For clarity, you may want to prefer ReuseAddr.
1031
1032       •   IO::Socket::INET now supports a value of zero for "LocalPort"
1033           (usually meaning that the operating system will make one up.)
1034
1035       •   'use lib' now works identically to @INC.  Removing directories with
1036           'no lib' now works.
1037
1038       •   Math::BigFloat and Math::BigInt have undergone a full rewrite by
1039           Tels.  They are now magnitudes faster, and they support various
1040           bignum libraries such as GMP and PARI as their backends.
1041
1042       •   Math::Complex handles inf, NaN etc., better.
1043
1044       •   Net::Ping has been considerably enhanced by Rob Brown: multihoming
1045           is now supported, Win32 functionality is better, there is now time
1046           measuring functionality (optionally high-resolution using
1047           Time::HiRes), and there is now "external" protocol which uses
1048           Net::Ping::External module which runs your external ping utility
1049           and parses the output.  A version of Net::Ping::External is
1050           available in CPAN.
1051
1052           Note that some of the Net::Ping tests are disabled when running
1053           under the Perl distribution since one cannot assume one or more of
1054           the following: enabled echo port at localhost, full Internet
1055           connectivity, or sympathetic firewalls.  You can set the
1056           environment variable PERL_TEST_Net_Ping to "1" (one) before running
1057           the Perl test suite to enable all the Net::Ping tests.
1058
1059POSIX::sigaction() is now much more flexible and robust.  You can
1060           now install coderef handlers, 'DEFAULT', and 'IGNORE' handlers,
1061           installing new handlers was not atomic.
1062
1063       •   In Safe, %INC is now localised in a Safe compartment so that
1064           use/require work.
1065
1066       •   In SDBM_File on DOSish platforms, some keys went missing because of
1067           lack of support for files with "holes".  A workaround for the
1068           problem has been added.
1069
1070       •   In Search::Dict one can now have a pre-processing hook for the
1071           lines being searched.
1072
1073       •   The Shell module now has an OO interface.
1074
1075       •   In Sys::Syslog there is now a failover mechanism that will go
1076           through alternative connection mechanisms until the message is
1077           successfully logged.
1078
1079       •   The Test module has been significantly enhanced.
1080
1081Time::Local::timelocal() does not handle fractional seconds
1082           anymore.  The rationale is that neither does localtime(), and
1083           timelocal() and localtime() are supposed to be inverses of each
1084           other.
1085
1086       •   The vars pragma now supports declaring fully qualified variables.
1087           (Something that our() does not and will not support.)
1088
1089       •   The "utf8::" name space (as in the pragma) provides various Perl-
1090           callable functions to provide low level access to Perl's internal
1091           Unicode representation.  At the moment only length() has been
1092           implemented.
1093

Utility Changes

1095       •   Emacs perl mode (emacs/cperl-mode.el) has been updated to version
1096           4.31.
1097
1098emacs/e2ctags.pl is now much faster.
1099
1100       •   "enc2xs" is a tool for people adding their own encodings to the
1101           Encode module.
1102
1103       •   "h2ph" now supports C trigraphs.
1104
1105       •   "h2xs" now produces a template README.
1106
1107       •   "h2xs" now uses "Devel::PPPort" for better portability between
1108           different versions of Perl.
1109
1110       •   "h2xs" uses the new ExtUtils::Constant module which will affect
1111           newly created extensions that define constants.  Since the new code
1112           is more correct (if you have two constants where the first one is a
1113           prefix of the second one, the first constant never got defined),
1114           less lossy (it uses integers for integer constant, as opposed to
1115           the old code that used floating point numbers even for integer
1116           constants), and slightly faster, you might want to consider
1117           regenerating your extension code (the new scheme makes regenerating
1118           easy).  h2xs now also supports C trigraphs.
1119
1120       •   "libnetcfg" has been added to configure libnet.
1121
1122       •   "perlbug" is now much more robust.  It also sends the bug report to
1123           perl.org, not perl.com.
1124
1125       •   "perlcc" has been rewritten and its user interface (that is,
1126           command line) is much more like that of the Unix C compiler, cc.
1127           (The perlbc tools has been removed.  Use "perlcc -B" instead.)
1128           Note that perlcc is still considered very experimental and
1129           unsupported. [561]
1130
1131       •   "perlivp" is a new Installation Verification Procedure utility for
1132           running any time after installing Perl.
1133
1134       •   "piconv" is an implementation of the character conversion utility
1135           "iconv", demonstrating the new Encode module.
1136
1137       •   "pod2html" now allows specifying a cache directory.
1138
1139       •   "pod2html" now produces XHTML 1.0.
1140
1141       •   "pod2html" now understands POD written using different line endings
1142           (PC-like CRLF versus Unix-like LF versus MacClassic-like CR).
1143
1144       •   "s2p" has been completely rewritten in Perl.  (It is in fact a full
1145           implementation of sed in Perl: you can use the sed functionality by
1146           using the "psed" utility.)
1147
1148       •   "xsubpp" now understands POD documentation embedded in the *.xs
1149           files. [561]
1150
1151       •   "xsubpp" now supports the OUT keyword.
1152

New Documentation

1154       •   perl56delta details the changes between the 5.005 release and the
1155           5.6.0 release.
1156
1157       •   perlclib documents the internal replacements for standard C library
1158           functions.  (Interesting only for extension writers and Perl core
1159           hackers.) [561+]
1160
1161       •   perldebtut is a Perl debugging tutorial. [561+]
1162
1163       •   perlebcdic contains considerations for running Perl on EBCDIC
1164           platforms. [561+]
1165
1166       •   perlintro is a gentle introduction to Perl.
1167
1168       •   perliol documents the internals of PerlIO with layers.
1169
1170       •   perlmodstyle is a style guide for writing modules.
1171
1172       •   perlnewmod tells about writing and submitting a new module. [561+]
1173
1174       •   perlpacktut is a pack() tutorial.
1175
1176       •   perlpod has been rewritten to be clearer and to record the best
1177           practices gathered over the years.
1178
1179       •   perlpodspec is a more formal specification of the pod format,
1180           mainly of interest for writers of pod applications, not to people
1181           writing in pod.
1182
1183       •   perlretut is a regular expression tutorial. [561+]
1184
1185       •   perlrequick is a regular expressions quick-start guide.  Yes, much
1186           quicker than perlretut. [561]
1187
1188       •   perltodo has been updated.
1189
1190       •   perltootc has been renamed as perltooc (to not to conflict with
1191           perltoot in filesystems restricted to "8.3" names).
1192
1193       •   perluniintro is an introduction to using Unicode in Perl.
1194           (perlunicode is more of a detailed reference and background
1195           information)
1196
1197       •   perlutil explains the command line utilities packaged with the Perl
1198           distribution. [561+]
1199
1200       The following platform-specific documents are available before the
1201       installation as README.platform, and after the installation as
1202       perlplatform:
1203
1204           perlaix perlamiga perlapollo perlbeos perlbs2000
1205           perlce perlcygwin perldgux perldos perlepoc perlfreebsd perlhpux
1206           perlhurd perlirix perlmachten perlmacos perlmint perlmpeix
1207           perlnetware perlos2 perlos390 perlplan9 perlqnx perlsolaris
1208           perltru64 perluts perlvmesa perlvms perlvos perlwin32
1209
1210       These documents usually detail one or more of the following subjects:
1211       configuring, building, testing, installing, and sometimes also using
1212       Perl on the said platform.
1213
1214       Eastern Asian Perl users are now welcomed in their own languages:
1215       README.jp (Japanese), README.ko (Korean), README.cn (simplified
1216       Chinese) and README.tw (traditional Chinese), which are written in
1217       normal pod but encoded in EUC-JP, EUC-KR, EUC-CN and Big5.  These will
1218       get installed as
1219
1220          perljp perlko perlcn perltw
1221
1222       •   The documentation for the POSIX-BC platform is called "BS2000", to
1223           avoid confusion with the Perl POSIX module.
1224
1225       •   The documentation for the WinCE platform is called perlce
1226           (README.ce in the source code kit), to avoid confusion with the
1227           perlwin32 documentation on 8.3-restricted filesystems.
1228

Performance Enhancements

1230map() could get pathologically slow when the result list it
1231           generates is larger than the source list.  The performance has been
1232           improved for common scenarios. [561]
1233
1234sort() is also fully reentrant, in the sense that the sort function
1235           can itself call sort().  This did not work reliably in previous
1236           releases. [561]
1237
1238sort() has been changed to use primarily mergesort internally as
1239           opposed to the earlier quicksort.  For very small lists this may
1240           result in slightly slower sorting times, but in general the speedup
1241           should be at least 20%.  Additional bonuses are that the worst case
1242           behaviour of sort() is now better (in computer science terms it now
1243           runs in time O(N log N), as opposed to quicksort's Theta(N**2)
1244           worst-case run time behaviour), and that sort() is now stable
1245           (meaning that elements with identical keys will stay ordered as
1246           they were before the sort).  See the "sort" pragma for information.
1247
1248           The story in more detail: suppose you want to serve yourself a
1249           little slice of Pi.
1250
1251               @digits = ( 3,1,4,1,5,9 );
1252
1253           A numerical sort of the digits will yield (1,1,3,4,5,9), as
1254           expected.  Which 1 comes first is hard to know, since one 1 looks
1255           pretty much like any other.  You can regard this as totally
1256           trivial, or somewhat profound.  However, if you just want to sort
1257           the even digits ahead of the odd ones, then what will
1258
1259               sort { ($a % 2) <=> ($b % 2) } @digits;
1260
1261           yield?  The only even digit, 4, will come first.  But how about the
1262           odd numbers, which all compare equal?  With the quicksort algorithm
1263           used to implement Perl 5.6 and earlier, the order of ties is left
1264           up to the sort.  So, as you add more and more digits of Pi, the
1265           order in which the sorted even and odd digits appear will change.
1266           and, for sufficiently large slices of Pi, the quicksort algorithm
1267           in Perl 5.8 won't return the same results even if reinvoked with
1268           the same input.  The justification for this rests with quicksort's
1269           worst case behavior.  If you run
1270
1271              sort { $a <=> $b } ( 1 .. $N , 1 .. $N );
1272
1273           (something you might approximate if you wanted to merge two sorted
1274           arrays using sort), doubling $N doesn't just double the quicksort
1275           time, it quadruples it.  Quicksort has a worst case run time that
1276           can grow like N**2, so-called quadratic behaviour, and it can
1277           happen on patterns that may well arise in normal use.  You won't
1278           notice this for small arrays, but you will notice it with larger
1279           arrays, and you may not live long enough for the sort to complete
1280           on arrays of a million elements.  So the 5.8 quicksort scrambles
1281           large arrays before sorting them, as a statistical defence against
1282           quadratic behaviour.  But that means if you sort the same large
1283           array twice, ties may be broken in different ways.
1284
1285           Because of the unpredictability of tie-breaking order, and the
1286           quadratic worst-case behaviour, quicksort was almost replaced
1287           completely with a stable mergesort.  Stable means that ties are
1288           broken to preserve the original order of appearance in the input
1289           array.  So
1290
1291               sort { ($a % 2) <=> ($b % 2) } (3,1,4,1,5,9);
1292
1293           will yield (4,3,1,1,5,9), guaranteed.  The even and odd numbers
1294           appear in the output in the same order they appeared in the input.
1295           Mergesort has worst case O(N log N) behaviour, the best value
1296           attainable.  And, ironically, this mergesort does particularly well
1297           where quicksort goes quadratic:  mergesort sorts (1..$N, 1..$N) in
1298           O(N) time.  But quicksort was rescued at the last moment because it
1299           is faster than mergesort on certain inputs and platforms.  For
1300           example, if you really don't care about the order of even and odd
1301           digits, quicksort will run in O(N) time; it's very good at sorting
1302           many repetitions of a small number of distinct elements.  The
1303           quicksort divide and conquer strategy works well on platforms with
1304           relatively small, very fast, caches.  Eventually, the problem gets
1305           whittled down to one that fits in the cache, from which point it
1306           benefits from the increased memory speed.
1307
1308           Quicksort was rescued by implementing a sort pragma to control
1309           aspects of the sort.  The stable subpragma forces stable behaviour,
1310           regardless of algorithm.  The _quicksort and _mergesort subpragmas
1311           are heavy-handed ways to select the underlying implementation.  The
1312           leading "_" is a reminder that these subpragmas may not survive
1313           beyond 5.8.  More appropriate mechanisms for selecting the
1314           implementation exist, but they wouldn't have arrived in time to
1315           save quicksort.
1316
1317       •   Hashes now use Bob Jenkins "One-at-a-Time" hashing key algorithm (
1318           http://burtleburtle.net/bob/hash/doobs.html ).  This algorithm is
1319           reasonably fast while producing a much better spread of values than
1320           the old hashing algorithm (originally by Chris Torek, later tweaked
1321           by Ilya Zakharevich).  Hash values output from the algorithm on a
1322           hash of all 3-char printable ASCII keys comes much closer to
1323           passing the DIEHARD random number generation tests.  According to
1324           perlbench, this change has not affected the overall speed of Perl.
1325
1326unshift() should now be noticeably faster.
1327

Installation and Configuration Improvements

1329   Generic Improvements
1330       •   INSTALL now explains how you can configure Perl to use 64-bit
1331           integers even on non-64-bit platforms.
1332
1333       •   Policy.sh policy change: if you are reusing a Policy.sh file (see
1334           INSTALL) and you use Configure -Dprefix=/foo/bar and in the old
1335           Policy $prefix eq $siteprefix and $prefix eq $vendorprefix, all of
1336           them will now be changed to the new prefix, /foo/bar.  (Previously
1337           only $prefix changed.)  If you do not like this new behaviour,
1338           specify prefix, siteprefix, and vendorprefix explicitly.
1339
1340       •   A new optional location for Perl libraries, otherlibdirs, is
1341           available.  It can be used for example for vendor add-ons without
1342           disturbing Perl's own library directories.
1343
1344       •   In many platforms, the vendor-supplied 'cc' is too stripped-down to
1345           build Perl (basically, 'cc' doesn't do ANSI C).  If this seems to
1346           be the case and 'cc' does not seem to be the GNU C compiler 'gcc',
1347           an automatic attempt is made to find and use 'gcc' instead.
1348
1349       •   gcc needs to closely track the operating system release to avoid
1350           build problems. If Configure finds that gcc was built for a
1351           different operating system release than is running, it now gives a
1352           clearly visible warning that there may be trouble ahead.
1353
1354       •   Since Perl 5.8 is not binary-compatible with previous releases of
1355           Perl, Configure no longer suggests including the 5.005 modules in
1356           @INC.
1357
1358       •   Configure "-S" can now run non-interactively. [561]
1359
1360       •   Configure support for pdp11-style memory models has been removed
1361           due to obsolescence. [561]
1362
1363       •   configure.gnu now works with options with whitespace in them.
1364
1365       •   installperl now outputs everything to STDERR.
1366
1367       •   Because PerlIO is now the default on most platforms, "-perlio"
1368           doesn't get appended to the $Config{archname} (also known as $^O)
1369           anymore.  Instead, if you explicitly choose not to use perlio
1370           (Configure command line option -Uuseperlio), you will get "-stdio"
1371           appended.
1372
1373       •   Another change related to the architecture name is that "-64all"
1374           (-Duse64bitall, or "maximally 64-bit") is appended only if your
1375           pointers are 64 bits wide.  (To be exact, the use64bitall is
1376           ignored.)
1377
1378       •   In AFS installations, one can configure the root of the AFS to be
1379           somewhere else than the default /afs by using the Configure
1380           parameter "-Dafsroot=/some/where/else".
1381
1382       •   APPLLIB_EXP, a lesser-known configuration-time definition, has been
1383           documented.  It can be used to prepend site-specific directories to
1384           Perl's default search path (@INC); see INSTALL for information.
1385
1386       •   The version of Berkeley DB used when the Perl (and, presumably, the
1387           DB_File extension) was built is now available as
1388           @Config{qw(db_version_major db_version_minor db_version_patch)}
1389           from Perl and as "DB_VERSION_MAJOR_CFG DB_VERSION_MINOR_CFG
1390           DB_VERSION_PATCH_CFG" from C.
1391
1392       •   Building Berkeley DB3 for compatibility modes for DB, NDBM, and
1393           ODBM has been documented in INSTALL.
1394
1395       •   If you have CPAN access (either network or a local copy such as a
1396           CD-ROM) you can during specify extra modules to Configure to build
1397           and install with Perl using the -Dextras=...  option.  See INSTALL
1398           for more details.
1399
1400       •   In addition to config.over, a new override file, config.arch, is
1401           available.  This file is supposed to be used by hints file writers
1402           for architecture-wide changes (as opposed to config.over which is
1403           for site-wide changes).
1404
1405       •   If your file system supports symbolic links, you can build Perl
1406           outside of the source directory by
1407
1408                   mkdir perl/build/directory
1409                   cd perl/build/directory
1410                   sh /path/to/perl/source/Configure -Dmksymlinks ...
1411
1412           This will create in perl/build/directory a tree of symbolic links
1413           pointing to files in /path/to/perl/source.  The original files are
1414           left unaffected.  After Configure has finished, you can just say
1415
1416                   make all test
1417
1418           and Perl will be built and tested, all in perl/build/directory.
1419           [561]
1420
1421       •   For Perl developers, several new make targets for profiling and
1422           debugging have been added; see perlhack.
1423
1424           •       Use of the gprof tool to profile Perl has been documented
1425                   in perlhack.  There is a make target called "perl.gprof"
1426                   for generating a gprofiled Perl executable.
1427
1428           •       If you have GCC 3, there is a make target called
1429                   "perl.gcov" for creating a gcoved Perl executable for
1430                   coverage analysis.  See perlhack.
1431
1432           •       If you are on IRIX or Tru64 platforms, new
1433                   profiling/debugging options have been added; see perlhack
1434                   for more information about pixie and Third Degree.
1435
1436       •   Guidelines of how to construct minimal Perl installations have been
1437           added to INSTALL.
1438
1439       •   The Thread extension is now not built at all under ithreads
1440           ("Configure -Duseithreads") because it wouldn't work anyway (the
1441           Thread extension requires being Configured with
1442           "-Duse5005threads").
1443
1444           Note that the 5.005 threads are unsupported and deprecated: if you
1445           have code written for the old threads you should migrate it to the
1446           new ithreads model.
1447
1448       •   The Gconvert macro ($Config{d_Gconvert}) used by perl for
1449           stringifying floating-point numbers is now more picky about using
1450           sprintf %.*g rules for the conversion.  Some platforms that used to
1451           use gcvt may now resort to the slower sprintf.
1452
1453       •   The obsolete method of making a special (e.g., debugging) flavor of
1454           perl by saying
1455
1456                   make LIBPERL=libperld.a
1457
1458           has been removed. Use -DDEBUGGING instead.
1459
1460   New Or Improved Platforms
1461       For the list of platforms known to support Perl, see "Supported
1462       Platforms" in perlport.
1463
1464       •   AIX dynamic loading should be now better supported.
1465
1466       •   AIX should now work better with gcc, threads, and 64-bitness.  Also
1467           the long doubles support in AIX should be better now.  See perlaix.
1468
1469       •   AtheOS ( http://www.atheos.cx/ ) is a new platform.
1470
1471       •   BeOS has been reclaimed.
1472
1473       •   The DG/UX platform now supports 5.005-style threads.  See perldgux.
1474
1475       •   The DYNIX/ptx platform (also known as dynixptx) is supported at or
1476           near osvers 4.5.2.
1477
1478       •   EBCDIC platforms (z/OS (also known as OS/390), POSIX-BC, and
1479           VM/ESA) have been regained.  Many test suite tests still fail and
1480           the co-existence of Unicode and EBCDIC isn't quite settled, but the
1481           situation is much better than with Perl 5.6.  See perlos390,
1482           perlbs2000 (for POSIX-BC), and perlvmesa for more information.
1483           (Note: support for VM/ESA was removed in Perl v5.18.0. The relevant
1484           information was in README.vmesa)
1485
1486       •   Building perl with -Duseithreads or -Duse5005threads now works
1487           under HP-UX 10.20 (previously it only worked under 10.30 or later).
1488           You will need a thread library package installed. See README.hpux.
1489           [561]
1490
1491       •   Mac OS Classic is now supported in the mainstream source package
1492           (MacPerl has of course been available since perl 5.004 but now the
1493           source code bases of standard Perl and MacPerl have been
1494           synchronised) [561]
1495
1496       •   Mac OS X (or Darwin) should now be able to build Perl even on HFS+
1497           filesystems.  (The case-insensitivity used to confuse the Perl
1498           build process.)
1499
1500       •   NCR MP-RAS is now supported. [561]
1501
1502       •   All the NetBSD specific patches (except for the installation
1503           specific ones) have been merged back to the main distribution.
1504
1505       •   NetWare from Novell is now supported.  See perlnetware.
1506
1507       •   NonStop-UX is now supported. [561]
1508
1509       •   NEC SUPER-UX is now supported.
1510
1511       •   All the OpenBSD specific patches (except for the installation
1512           specific ones) have been merged back to the main distribution.
1513
1514       •   Perl has been tested with the GNU pth userlevel thread package (
1515           http://www.gnu.org/software/pth/pth.html ).  All thread tests of
1516           Perl now work, but not without adding some yield()s to the tests,
1517           so while pth (and other userlevel thread implementations) can be
1518           considered to be "working" with Perl ithreads, keep in mind the
1519           possible non-preemptability of the underlying thread
1520           implementation.
1521
1522       •   Stratus VOS is now supported using Perl's native build method
1523           (Configure).  This is the recommended method to build Perl on VOS.
1524           The older methods, which build miniperl, are still available.  See
1525           perlvos. [561+]
1526
1527       •   The Amdahl UTS Unix mainframe platform is now supported. [561]
1528
1529       •   WinCE is now supported.  See perlce.
1530
1531       •   z/OS (formerly known as OS/390, formerly known as MVS OE) now has
1532           support for dynamic loading.  This is not selected by default,
1533           however, you must specify -Dusedl in the arguments of Configure.
1534           [561]
1535

Selected Bug Fixes

1537       Numerous memory leaks and uninitialized memory accesses have been
1538       hunted down.  Most importantly, anonymous subs used to leak quite a
1539       bit. [561]
1540
1541       •   The autouse pragma didn't work for Multi::Part::Function::Names.
1542
1543caller() could cause core dumps in certain situations.  Carp was
1544           sometimes affected by this problem.  In particular, caller() now
1545           returns a subroutine name of "(unknown)" for subroutines that have
1546           been removed from the symbol table.
1547
1548       •   chop(@list) in list context returned the characters chopped in
1549           reverse order.  This has been reversed to be in the right order.
1550           [561]
1551
1552       •   Configure no longer includes the DBM libraries (dbm, gdbm, db,
1553           ndbm) when building the Perl binary.  The only exception to this is
1554           SunOS 4.x, which needs them. [561]
1555
1556       •   The behaviour of non-decimal but numeric string constants such as
1557           "0x23" was platform-dependent: in some platforms that was seen as
1558           35, in some as 0, in some as a floating point number (don't ask).
1559           This was caused by Perl's using the operating system libraries in a
1560           situation where the result of the string to number conversion is
1561           undefined: now Perl consistently handles such strings as zero in
1562           numeric contexts.
1563
1564       •   Several debugger fixes: exit code now reflects the script exit
1565           code, condition "0" now treated correctly, the "d" command now
1566           checks line number, $. no longer gets corrupted, and all debugger
1567           output now goes correctly to the socket if RemotePort is set. [561]
1568
1569       •   The debugger (perl5db.pl) has been modified to present a more
1570           consistent commands interface, via (CommandSet=580).  perl5db.t was
1571           also added to test the changes, and as a placeholder for further
1572           tests.
1573
1574           See perldebug.
1575
1576       •   The debugger has a new "dumpDepth" option to control the maximum
1577           depth to which nested structures are dumped.  The "x" command has
1578           been extended so that "x N EXPR" dumps out the value of EXPR to a
1579           depth of at most N levels.
1580
1581       •   The debugger can now show lexical variables if you have the CPAN
1582           module PadWalker installed.
1583
1584       •   The order of DESTROYs has been made more predictable.
1585
1586       •   Perl 5.6.0 could emit spurious warnings about redefinition of
1587           dl_error() when statically building extensions into perl.  This has
1588           been corrected. [561]
1589
1590       •   dprofpp -R didn't work.
1591
1592       •   *foo{FORMAT} now works.
1593
1594       •   Infinity is now recognized as a number.
1595
1596       •   UNIVERSAL::isa no longer caches methods incorrectly.  (This broke
1597           the Tk extension with 5.6.0.) [561]
1598
1599       •   Lexicals I: lexicals outside an eval "" weren't resolved correctly
1600           inside a subroutine definition inside the eval "" if they were not
1601           already referenced in the top level of the eval""ed code.
1602
1603       •   Lexicals II: lexicals leaked at file scope into subroutines that
1604           were declared before the lexicals.
1605
1606       •   Lexical warnings now propagating correctly between scopes and into
1607           "eval "..."".
1608
1609       •   "use warnings qw(FATAL all)" did not work as intended.  This has
1610           been corrected. [561]
1611
1612warnings::enabled() now reports the state of $^W correctly if the
1613           caller isn't using lexical warnings. [561]
1614
1615       •   Line renumbering with eval and "#line" now works. [561]
1616
1617       •   Fixed numerous memory leaks, especially in eval "".
1618
1619       •   Localised tied variables no longer leak memory
1620
1621               use Tie::Hash;
1622               tie my %tied_hash => 'Tie::StdHash';
1623
1624               ...
1625
1626               # Used to leak memory every time local() was called;
1627               # in a loop, this added up.
1628               local($tied_hash{Foo}) = 1;
1629
1630       •   Localised hash elements (and %ENV) are correctly unlocalised to not
1631           exist, if they didn't before they were localised.
1632
1633               use Tie::Hash;
1634               tie my %tied_hash => 'Tie::StdHash';
1635
1636               ...
1637
1638               # Nothing has set the FOO element so far
1639
1640               { local $tied_hash{FOO} = 'Bar' }
1641
1642               # This used to print, but not now.
1643               print "exists!\n" if exists $tied_hash{FOO};
1644
1645           As a side effect of this fix, tied hash interfaces must define the
1646           EXISTS and DELETE methods.
1647
1648mkdir() now ignores trailing slashes in the directory name, as
1649           mandated by POSIX.
1650
1651       •   Some versions of glibc have a broken modfl().  This affects builds
1652           with "-Duselongdouble".  This version of Perl detects this
1653           brokenness and has a workaround for it.  The glibc release 2.2.2 is
1654           known to have fixed the modfl() bug.
1655
1656       •   Modulus of unsigned numbers now works (4063328477 % 65535 used to
1657           return 27406, instead of 27047). [561]
1658
1659       •   Some "not a number" warnings introduced in 5.6.0 eliminated to be
1660           more compatible with 5.005.  Infinity is now recognised as a
1661           number. [561]
1662
1663       •   Numeric conversions did not recognize changes in the string value
1664           properly in certain circumstances. [561]
1665
1666       •   Attributes (such as :shared) didn't work with our().
1667
1668our() variables will not cause bogus "Variable will not stay
1669           shared" warnings. [561]
1670
1671       •   "our" variables of the same name declared in two sibling blocks
1672           resulted in bogus warnings about "redeclaration" of the variables.
1673           The problem has been corrected. [561]
1674
1675       •   pack "Z" now correctly terminates the string with "\0".
1676
1677       •   Fix password routines which in some shadow password platforms (e.g.
1678           HP-UX) caused getpwent() to return every other entry.
1679
1680       •   The PERL5OPT environment variable (for passing command line
1681           arguments to Perl) didn't work for more than a single group of
1682           options. [561]
1683
1684       •   PERL5OPT with embedded spaces didn't work.
1685
1686printf() no longer resets the numeric locale to "C".
1687
1688       •   qw(a\\b) now parses correctly as 'a\\b': that is, as three
1689           characters, not four. [561]
1690
1691pos() did not return the correct value within s///ge in earlier
1692           versions.  This is now handled correctly. [561]
1693
1694       •   Printing quads (64-bit integers) with printf/sprintf now works
1695           without the q L ll prefixes (assuming you are on a quad-capable
1696           platform).
1697
1698       •   Regular expressions on references and overloaded scalars now work.
1699           [561+]
1700
1701       •   Right-hand side magic (GMAGIC) could in many cases such as string
1702           concatenation be invoked too many times.
1703
1704scalar() now forces scalar context even when used in void context.
1705
1706       •   SOCKS support is now much more robust.
1707
1708sort() arguments are now compiled in the right wantarray context
1709           (they were accidentally using the context of the sort() itself).
1710           The comparison block is now run in scalar context, and the
1711           arguments to be sorted are always provided list context. [561]
1712
1713       •   Changed the POSIX character class "[[:space:]]" to include the
1714           (very rarely used) vertical tab character.  Added a new POSIX-ish
1715           character class "[[:blank:]]" which stands for horizontal
1716           whitespace (currently, the space and the tab).
1717
1718       •   The tainting behaviour of sprintf() has been rationalized.  It does
1719           not taint the result of floating point formats anymore, making the
1720           behaviour consistent with that of string interpolation. [561]
1721
1722       •   Some cases of inconsistent taint propagation (such as within hash
1723           values) have been fixed.
1724
1725       •   The RE engine found in Perl 5.6.0 accidentally pessimised certain
1726           kinds of simple pattern matches.  These are now handled better.
1727           [561]
1728
1729       •   Regular expression debug output (whether through "use re 'debug'"
1730           or via "-Dr") now looks better. [561]
1731
1732       •   Multi-line matches like ""a\nxb\n" =~ /(?!\A)x/m" were flawed.  The
1733           bug has been fixed. [561]
1734
1735       •   Use of $& could trigger a core dump under some situations.  This is
1736           now avoided. [561]
1737
1738       •   The regular expression captured submatches ($1, $2, ...) are now
1739           more consistently unset if the match fails, instead of leaving
1740           false data lying around in them. [561]
1741
1742readline() on files opened in "slurp" mode could return an extra ""
1743           (blank line) at the end in certain situations.  This has been
1744           corrected. [561]
1745
1746       •   Autovivification of symbolic references of special variables
1747           described in perlvar (as in "${$num}") was accidentally disabled.
1748           This works again now. [561]
1749
1750       •   Sys::Syslog ignored the "LOG_AUTH" constant.
1751
1752       •   $AUTOLOAD, sort(), lock(), and spawning subprocesses in multiple
1753           threads simultaneously are now thread-safe.
1754
1755       •   Tie::Array's SPLICE method was broken.
1756
1757       •   Allow a read-only string on the left-hand side of a non-modifying
1758           tr///.
1759
1760       •   If "STDERR" is tied, warnings caused by "warn" and "die" now
1761           correctly pass to it.
1762
1763       •   Several Unicode fixes.
1764
1765           •       BOMs (byte order marks) at the beginning of Perl files
1766                   (scripts, modules) should now be transparently skipped.
1767                   UTF-16 and UCS-2 encoded Perl files should now be read
1768                   correctly.
1769
1770           •       The character tables have been updated to Unicode 3.2.0.
1771
1772           •       Comparing with utf8 data does not magically upgrade
1773                   non-utf8 data into utf8.  (This was a problem for example
1774                   if you were mixing data from I/O and Unicode data: your
1775                   output might have got magically encoded as UTF-8.)
1776
1777           •       Generating illegal Unicode code points such as U+FFFE, or
1778                   the UTF-16 surrogates, now also generates an optional
1779                   warning.
1780
1781           •       "IsAlnum", "IsAlpha", and "IsWord" now match titlecase.
1782
1783           •       Concatenation with the "." operator or via variable
1784                   interpolation, "eq", "substr", "reverse", "quotemeta", the
1785                   "x" operator, substitution with "s///", single-quoted
1786                   UTF-8, should now work.
1787
1788           •       The "tr///" operator now works.  Note that the "tr///CU"
1789                   functionality has been removed (but see pack('U0', ...)).
1790
1791           •       "eval "v200"" now works.
1792
1793           •       Perl 5.6.0 parsed m/\x{ab}/ incorrectly, leading to
1794                   spurious warnings.  This has been corrected. [561]
1795
1796           •       Zero entries were missing from the Unicode classes such as
1797                   "IsDigit".
1798
1799       •   Large unsigned numbers (those above 2**31) could sometimes lose
1800           their unsignedness, causing bogus results in arithmetic operations.
1801           [561]
1802
1803       •   The Perl parser has been stress tested using both random input and
1804           Markov chain input and the few found crashes and lockups have been
1805           fixed.
1806
1807   Platform Specific Changes and Fixes
1808       •   BSDI 4.*
1809
1810           Perl now works on post-4.0 BSD/OSes.
1811
1812       •   All BSDs
1813
1814           Setting $0 now works (as much as possible; see perlvar for
1815           details).
1816
1817       •   Cygwin
1818
1819           Numerous updates; currently synchronised with Cygwin 1.3.10.
1820
1821       •   Previously DYNIX/ptx had problems in its Configure probe for non-
1822           blocking I/O.
1823
1824       •   EPOC
1825
1826           EPOC now better supported.  See README.epoc. [561]
1827
1828       •   FreeBSD 3.*
1829
1830           Perl now works on post-3.0 FreeBSDs.
1831
1832       •   HP-UX
1833
1834           README.hpux updated; "Configure -Duse64bitall" now works; now uses
1835           HP-UX malloc instead of Perl malloc.
1836
1837       •   IRIX
1838
1839           Numerous compilation flag and hint enhancements; accidental mixing
1840           of 32-bit and 64-bit libraries (a doomed attempt) made much harder.
1841
1842       •   Linux
1843
1844           •       Long doubles should now work (see INSTALL). [561]
1845
1846           •       Linux previously had problems related to sockaddrlen when
1847                   using accept(), recvfrom() (in Perl: recv()),
1848                   getpeername(), and getsockname().
1849
1850       •   Mac OS Classic
1851
1852           Compilation of the standard Perl distribution in Mac OS Classic
1853           should now work if you have the Metrowerks development environment
1854           and the missing Mac-specific toolkit bits.  Contact the macperl
1855           mailing list for details.
1856
1857       •   MPE/iX
1858
1859           MPE/iX update after Perl 5.6.0.  See README.mpeix. [561]
1860
1861       •   NetBSD/threads: try installing the GNU pth (should be in the
1862           packages collection, or http://www.gnu.org/software/pth/), and
1863           Configure with -Duseithreads.
1864
1865       •   NetBSD/sparc
1866
1867           Perl now works on NetBSD/sparc.
1868
1869       •   OS/2
1870
1871           Now works with usethreads (see INSTALL). [561]
1872
1873       •   Solaris
1874
1875           64-bitness using the Sun Workshop compiler now works.
1876
1877       •   Stratus VOS
1878
1879           The native build method requires at least VOS Release 14.5.0 and
1880           GNU C++/GNU Tools 2.0.1 or later.  The Perl pack function now maps
1881           overflowed values to +infinity and underflowed values to -infinity.
1882
1883       •   Tru64 (aka Digital UNIX, aka DEC OSF/1)
1884
1885           The operating system version letter now recorded in
1886           $Config{osvers}.  Allow compiling with gcc (previously explicitly
1887           forbidden).  Compiling with gcc still not recommended because buggy
1888           code results, even with gcc 2.95.2.
1889
1890       •   Unicos
1891
1892           Fixed various alignment problems that lead into core dumps either
1893           during build or later; no longer dies on math errors at runtime;
1894           now using full quad integers (64 bits), previously was using only
1895           46 bit integers for speed.
1896
1897       •   VMS
1898
1899           See "Socket Extension Dynamic in VMS" and "IEEE-format Floating
1900           Point Default on OpenVMS Alpha" for important changes not otherwise
1901           listed here.
1902
1903           chdir() now works better despite a CRT bug; now works with
1904           MULTIPLICITY (see INSTALL); now works with Perl's malloc.
1905
1906           The tainting of %ENV elements via "keys" or "values" was previously
1907           unimplemented.  It now works as documented.
1908
1909           The "waitpid" emulation has been improved.  The worst bug (now
1910           fixed) was that a pid of -1 would cause a wildcard search of all
1911           processes on the system.
1912
1913           POSIX-style signals are now emulated much better on VMS versions
1914           prior to 7.0.
1915
1916           The "system" function and backticks operator have improved
1917           functionality and better error handling. [561]
1918
1919           File access tests now use current process privileges rather than
1920           the user's default privileges, which could sometimes result in a
1921           mismatch between reported access and actual access.  This
1922           improvement is only available on VMS v6.0 and later.
1923
1924           There is a new "kill" implementation based on "sys$sigprc" that
1925           allows older VMS systems (pre-7.0) to use "kill" to send signals
1926           rather than simply force exit.  This implementation also allows
1927           later systems to call "kill" from within a signal handler.
1928
1929           Iterative logical name translations are now limited to 10
1930           iterations in imitation of SHOW LOGICAL and other OpenVMS
1931           facilities.
1932
1933       •   Windows
1934
1935           •       Signal handling now works better than it used to.  It is
1936                   now implemented using a Windows message loop, and is
1937                   therefore less prone to random crashes.
1938
1939fork() emulation is now more robust, but still continues to
1940                   have a few esoteric bugs and caveats.  See perlfork for
1941                   details. [561+]
1942
1943           •       A failed (pseudo)fork now returns undef and sets errno to
1944                   EAGAIN. [561]
1945
1946           •       The following modules now work on Windows:
1947
1948                       ExtUtils::Embed         [561]
1949                       IO::Pipe
1950                       IO::Poll
1951                       Net::Ping
1952
1953IO::File::new_tmpfile() is no longer limited to 32767
1954                   invocations per-process.
1955
1956           •       Better chdir() return value for a non-existent directory.
1957
1958           •       Compiling perl using the 64-bit Platform SDK tools is now
1959                   supported.
1960
1961           •       The Win32::SetChildShowWindow() builtin can be used to
1962                   control the visibility of windows created by child
1963                   processes.  See Win32 for details.
1964
1965           •       Non-blocking waits for child processes (or pseudo-
1966                   processes) are supported via "waitpid($pid,
1967                   &POSIX::WNOHANG)".
1968
1969           •       The behavior of system() with multiple arguments has been
1970                   rationalized.  Each unquoted argument will be automatically
1971                   quoted to protect whitespace, and any existing whitespace
1972                   in the arguments will be preserved.  This improves the
1973                   portability of system(@args) by avoiding the need for
1974                   Windows "cmd" shell specific quoting in perl programs.
1975
1976                   Note that this means that some scripts that may have relied
1977                   on earlier buggy behavior may no longer work correctly.
1978                   For example, "system("nmake /nologo", @args)" will now
1979                   attempt to run the file "nmake /nologo" and will fail when
1980                   such a file isn't found.  On the other hand, perl will now
1981                   execute code such as "system("c:/Program
1982                   Files/MyApp/foo.exe", @args)" correctly.
1983
1984           •       The perl header files no longer suppress common warnings
1985                   from the Microsoft Visual C++ compiler.  This means that
1986                   additional warnings may now show up when compiling XS code.
1987
1988           •       Borland C++ v5.5 is now a supported compiler that can build
1989                   Perl.  However, the generated binaries continue to be
1990                   incompatible with those generated by the other supported
1991                   compilers (GCC and Visual C++). [561]
1992
1993           •       Duping socket handles with open(F, ">&MYSOCK") now works
1994                   under Windows 9x.  [561]
1995
1996           •       Current directory entries in %ENV are now correctly
1997                   propagated to child processes. [561]
1998
1999           •       New %ENV entries now propagate to subprocesses. [561]
2000
2001Win32::GetCwd() correctly returns C:\ instead of C: when at
2002                   the drive root.  Other bugs in chdir() and Cwd::cwd() have
2003                   also been fixed. [561]
2004
2005           •       The makefiles now default to the features enabled in
2006                   ActiveState ActivePerl (a popular Win32 binary
2007                   distribution). [561]
2008
2009           •       HTML files will now be installed in c:\perl\html instead of
2010                   c:\perl\lib\pod\html
2011
2012           •       REG_EXPAND_SZ keys are now allowed in registry settings
2013                   used by perl. [561]
2014
2015           •       Can now send() from all threads, not just the first one.
2016                   [561]
2017
2018           •       ExtUtils::MakeMaker now uses $ENV{LIB} to search for
2019                   libraries. [561]
2020
2021           •       Less stack reserved per thread so that more threads can run
2022                   concurrently. (Still 16M per thread.) [561]
2023
2024           •       "File::Spec->tmpdir()" now prefers C:/temp over /tmp (works
2025                   better when perl is running as service).
2026
2027           •       Better UNC path handling under ithreads. [561]
2028
2029wait(), waitpid(), and backticks now return the correct
2030                   exit status under Windows 9x. [561]
2031
2032           •       A socket handle leak in accept() has been fixed. [561]
2033

New or Changed Diagnostics

2035       Please see perldiag for more details.
2036
2037       •   Ambiguous range in the transliteration operator (like a-z-9) now
2038           gives a warning.
2039
2040       •   chdir("") and chdir(undef) now give a deprecation warning because
2041           they cause a possible unintentional chdir to the home directory.
2042           Say chdir() if you really mean that.
2043
2044       •   Two new debugging options have been added: if you have compiled
2045           your Perl with debugging, you can use the -DT [561] and -DR options
2046           to trace tokenising and to add reference counts to displaying
2047           variables, respectively.
2048
2049       •   The lexical warnings category "deprecated" is no longer a sub-
2050           category of the "syntax" category. It is now a top-level category
2051           in its own right.
2052
2053       •   Unadorned dump() will now give a warning suggesting to use explicit
2054           CORE::dump() if that's what really is meant.
2055
2056       •   The "Unrecognized escape" warning has been extended to include
2057           "\8", "\9", and "\_".  There is no need to escape any of the "\w"
2058           characters.
2059
2060       •   All regular expression compilation error messages are now hopefully
2061           easier to understand both because the error message now comes
2062           before the failed regex and because the point of failure is now
2063           clearly marked by a "<-- HERE" marker.
2064
2065       •   Various I/O (and socket) functions like binmode(), close(), and so
2066           forth now more consistently warn if they are used illogically
2067           either on a yet unopened or on an already closed filehandle (or
2068           socket).
2069
2070       •   Using lstat() on a filehandle now gives a warning.  (It's a non-
2071           sensical thing to do.)
2072
2073       •   The "-M" and "-m" options now warn if you didn't supply the module
2074           name.
2075
2076       •   If you in "use" specify a required minimum version, modules
2077           matching the name and but not defining a $VERSION will cause a
2078           fatal failure.
2079
2080       •   Using negative offset for vec() in lvalue context is now a warnable
2081           offense.
2082
2083       •   Odd number of arguments to overload::constant now elicits a
2084           warning.
2085
2086       •   Odd number of elements in anonymous hash now elicits a warning.
2087
2088       •   The various "opened only for", "on closed", "never opened" warnings
2089           drop the "main::" prefix for filehandles in the "main" package, for
2090           example "STDIN" instead of "main::STDIN".
2091
2092       •   Subroutine prototypes are now checked more carefully, you may get
2093           warnings for example if you have used non-prototype characters.
2094
2095       •   If an attempt to use a (non-blessed) reference as an array index is
2096           made, a warning is given.
2097
2098       •   "push @a;" and "unshift @a;" (with no values to push or unshift)
2099           now give a warning.  This may be a problem for generated and
2100           eval'ed code.
2101
2102       •   If you try to "pack" in perlfunc a number less than 0 or larger
2103           than 255 using the "C" format you will get an optional warning.
2104           Similarly for the "c" format and a number less than -128 or more
2105           than 127.
2106
2107       •   pack "P" format now demands an explicit size.
2108
2109       •   unpack "w" now warns of unterminated compressed integers.
2110
2111       •   Warnings relating to the use of PerlIO have been added.
2112
2113       •   Certain regex modifiers such as "(?o)" make sense only if applied
2114           to the entire regex.  You will get an optional warning if you try
2115           to do otherwise.
2116
2117       •   Variable length lookbehind has not yet been implemented, trying to
2118           use it will tell that.
2119
2120       •   Using arrays or hashes as references (e.g. "%foo->{bar}" has been
2121           deprecated for a while.  Now you will get an optional warning.
2122
2123       •   Warnings relating to the use of the new restricted hashes feature
2124           have been added.
2125
2126       •   Self-ties of arrays and hashes are not supported and fatal errors
2127           will happen even at an attempt to do so.
2128
2129       •   Using "sort" in scalar context now issues an optional warning.
2130           This didn't do anything useful, as the sort was not performed.
2131
2132       •   Using the /g modifier in split() is meaningless and will cause a
2133           warning.
2134
2135       •   Using splice() past the end of an array now causes a warning.
2136
2137       •   Malformed Unicode encodings (UTF-8 and UTF-16) cause a lot of
2138           warnings, as does trying to use UTF-16 surrogates (which are
2139           unimplemented).
2140
2141       •   Trying to use Unicode characters on an I/O stream without marking
2142           the stream's encoding (using open() or binmode()) will cause "Wide
2143           character" warnings.
2144
2145       •   Use of v-strings in use/require causes a (backward) portability
2146           warning.
2147
2148       •   Warnings relating to the use interpreter threads and their shared
2149           data have been added.
2150

Changed Internals

2152       •   PerlIO is now the default.
2153
2154       •   perlapi.pod (a companion to perlguts) now attempts to document the
2155           internal API.
2156
2157       •   You can now build a really minimal perl called microperl.  Building
2158           microperl does not require even running Configure; "make -f
2159           Makefile.micro" should be enough.  Beware: microperl makes many
2160           assumptions, some of which may be too bold; the resulting
2161           executable may crash or otherwise misbehave in wondrous ways.  For
2162           careful hackers only.
2163
2164       •   Added rsignal(), whichsig(), do_join(), op_clear, op_null,
2165           ptr_table_clear(), ptr_table_free(), sv_setref_uv(), and several
2166           UTF-8 interfaces to the publicised API.  For the full list of the
2167           available APIs see perlapi.
2168
2169       •   Made possible to propagate customised exceptions via croak()ing.
2170
2171       •   Now xsubs can have attributes just like subs.  (Well, at least the
2172           built-in attributes.)
2173
2174       •   dTHR and djSP have been obsoleted; the former removed (because it's
2175           a no-op) and the latter replaced with dSP.
2176
2177       •   PERL_OBJECT has been completely removed.
2178
2179       •   The MAGIC constants (e.g. 'P') have been macrofied (e.g.
2180           "PERL_MAGIC_TIED") for better source code readability and
2181           maintainability.
2182
2183       •   The regex compiler now maintains a structure that identifies nodes
2184           in the compiled bytecode with the corresponding syntactic features
2185           of the original regex expression.  The information is attached to
2186           the new "offsets" member of the "struct regexp". See perldebguts
2187           for more complete information.
2188
2189       •   The C code has been made much more "gcc -Wall" clean.  Some warning
2190           messages still remain in some platforms, so if you are compiling
2191           with gcc you may see some warnings about dubious practices.  The
2192           warnings are being worked on.
2193
2194perly.c, sv.c, and sv.h have now been extensively commented.
2195
2196       •   Documentation on how to use the Perl source repository has been
2197           added to Porting/repository.pod.
2198
2199       •   There are now several profiling make targets.
2200

Security Vulnerability Closed [561]

2202       (This change was already made in 5.7.0 but bears repeating here.)
2203       (5.7.0 came out before 5.6.1: the development branch 5.7 released
2204       earlier than the maintenance branch 5.6)
2205
2206       A potential security vulnerability in the optional suidperl component
2207       of Perl was identified in August 2000.  suidperl is neither built nor
2208       installed by default.  As of November 2001 the only known vulnerable
2209       platform is Linux, most likely all Linux distributions.  CERT and
2210       various vendors and distributors have been alerted about the
2211       vulnerability.  See
2212       http://www.cpan.org/src/5.0/sperl-2000-08-05/sperl-2000-08-05.txt for
2213       more information.
2214
2215       The problem was caused by Perl trying to report a suspected security
2216       exploit attempt using an external program, /bin/mail.  On Linux
2217       platforms the /bin/mail program had an undocumented feature which when
2218       combined with suidperl gave access to a root shell, resulting in a
2219       serious compromise instead of reporting the exploit attempt.  If you
2220       don't have /bin/mail, or if you have 'safe setuid scripts', or if
2221       suidperl is not installed, you are safe.
2222
2223       The exploit attempt reporting feature has been completely removed from
2224       Perl 5.8.0 (and the maintenance release 5.6.1, and it was removed also
2225       from all the Perl 5.7 releases), so that particular vulnerability isn't
2226       there anymore.  However, further security vulnerabilities are,
2227       unfortunately, always possible.  The suidperl functionality is most
2228       probably going to be removed in Perl 5.10.  In any case, suidperl
2229       should only be used by security experts who know exactly what they are
2230       doing and why they are using suidperl instead of some other solution
2231       such as sudo ( see http://www.courtesan.com/sudo/ ).
2232

New Tests

2234       Several new tests have been added, especially for the lib and ext
2235       subsections.  There are now about 69 000 individual tests (spread over
2236       about 700 test scripts), in the regression suite (5.6.1 has about 11
2237       700 tests, in 258 test scripts)  The exact numbers depend on the
2238       platform and Perl configuration used.  Many of the new tests are of
2239       course introduced by the new modules, but still in general Perl is now
2240       more thoroughly tested.
2241
2242       Because of the large number of tests, running the regression suite will
2243       take considerably longer time than it used to: expect the suite to take
2244       up to 4-5 times longer to run than in perl 5.6.  On a really fast
2245       machine you can hope to finish the suite in about 6-8 minutes
2246       (wallclock time).
2247
2248       The tests are now reported in a different order than in earlier Perls.
2249       (This happens because the test scripts from under t/lib have been moved
2250       to be closer to the library/extension they are testing.)
2251

Known Problems

2253   The Compiler Suite Is Still Very Experimental
2254       The compiler suite is slowly getting better but it continues to be
2255       highly experimental.  Use in production environments is discouraged.
2256
2257   Localising Tied Arrays and Hashes Is Broken
2258           local %tied_array;
2259
2260       doesn't work as one would expect: the old value is restored
2261       incorrectly.  This will be changed in a future release, but we don't
2262       know yet what the new semantics will exactly be.  In any case, the
2263       change will break existing code that relies on the current (ill-
2264       defined) semantics, so just avoid doing this in general.
2265
2266   Building Extensions Can Fail Because Of Largefiles
2267       Some extensions like mod_perl are known to have issues with
2268       `largefiles', a change brought by Perl 5.6.0 in which file offsets
2269       default to 64 bits wide, where supported.  Modules may fail to compile
2270       at all, or they may compile and work incorrectly.  Currently, there is
2271       no good solution for the problem, but Configure now provides
2272       appropriate non-largefile ccflags, ldflags, libswanted, and libs in the
2273       %Config hash (e.g., $Config{ccflags_nolargefiles}) so the extensions
2274       that are having problems can try configuring themselves without the
2275       largefileness.  This is admittedly not a clean solution, and the
2276       solution may not even work at all.  One potential failure is whether
2277       one can (or, if one can, whether it's a good idea to) link together at
2278       all binaries with different ideas about file offsets; all this is
2279       platform-dependent.
2280
2281   Modifying $_ Inside for(..)
2282          for (1..5) { $_++ }
2283
2284       works without complaint.  It shouldn't.  (You should be able to modify
2285       only lvalue elements inside the loops.)  You can see the correct
2286       behaviour by replacing the 1..5 with 1, 2, 3, 4, 5.
2287
2288   mod_perl 1.26 Doesn't Build With Threaded Perl
2289       Use mod_perl 1.27 or higher.
2290
2291   lib/ftmp-security tests warn 'system possibly insecure'
2292       Don't panic.  Read the 'make test' section of INSTALL instead.
2293
2294   libwww-perl (LWP) fails base/date #51
2295       Use libwww-perl 5.65 or later.
2296
2297   PDL failing some tests
2298       Use PDL 2.3.4 or later.
2299
2300   Perl_get_sv
2301       You may get errors like 'Undefined symbol "Perl_get_sv"' or "can't
2302       resolve symbol 'Perl_get_sv'", or the symbol may be "Perl_sv_2pv".
2303       This probably means that you are trying to use an older shared Perl
2304       library (or extensions linked with such) with Perl 5.8.0 executable.
2305       Perl used to have such a subroutine, but that is no more the case.
2306       Check your shared library path, and any shared Perl libraries in those
2307       directories.
2308
2309       Sometimes this problem may also indicate a partial Perl 5.8.0
2310       installation, see "Mac OS X dyld undefined symbols" for an example and
2311       how to deal with it.
2312
2313   Self-tying Problems
2314       Self-tying of arrays and hashes is broken in rather deep and hard-to-
2315       fix ways.  As a stop-gap measure to avoid people from getting
2316       frustrated at the mysterious results (core dumps, most often), it is
2317       forbidden for now (you will get a fatal error even from an attempt).
2318
2319       A change to self-tying of globs has caused them to be recursively
2320       referenced (see: "Two-Phased Garbage Collection" in perlobj).  You will
2321       now need an explicit untie to destroy a self-tied glob.  This behaviour
2322       may be fixed at a later date.
2323
2324       Self-tying of scalars and IO thingies works.
2325
2326   ext/threads/t/libc
2327       If this test fails, it indicates that your libc (C library) is not
2328       threadsafe.  This particular test stress tests the localtime() call to
2329       find out whether it is threadsafe.  See perlthrtut for more
2330       information.
2331
2332   Failure of Thread (5.005-style) tests
2333       Note that support for 5.005-style threading is deprecated, experimental
2334       and practically unsupported.  In 5.10, it is expected to be removed.
2335       You should migrate your code to ithreads.
2336
2337       The following tests are known to fail due to fundamental problems in
2338       the 5.005 threading implementation. These are not new failures--Perl
2339       5.005_0x has the same bugs, but didn't have these tests.
2340
2341        ../ext/B/t/xref.t                    255 65280    14   12  85.71%  3-14
2342        ../ext/List/Util/t/first.t           255 65280     7    4  57.14%  2 5-7
2343        ../lib/English.t                       2   512    54    2   3.70%  2-3
2344        ../lib/FileCache.t                                 5    1  20.00%  5
2345        ../lib/Filter/Simple/t/data.t                      6    3  50.00%  1-3
2346        ../lib/Filter/Simple/t/filter_only.                9    3  33.33%  1-2 5
2347        ../lib/Math/BigInt/t/bare_mbf.t                 1627    4   0.25%  8 11 1626-1627
2348        ../lib/Math/BigInt/t/bigfltpm.t                 1629    4   0.25%  10 13 1628-
2349                                                                           1629
2350        ../lib/Math/BigInt/t/sub_mbf.t                  1633    4   0.24%  8 11 1632-1633
2351        ../lib/Math/BigInt/t/with_sub.t                 1628    4   0.25%  9 12 1627-1628
2352        ../lib/Tie/File/t/31_autodefer.t     255 65280    65   32  49.23%  34-65
2353        ../lib/autouse.t                                  10    1  10.00%  4
2354        op/flip.t                                         15    1   6.67%  15
2355
2356       These failures are unlikely to get fixed as 5.005-style threads are
2357       considered fundamentally broken.  (Basically what happens is that
2358       competing threads can corrupt shared global state, one good example
2359       being regular expression engine's state.)
2360
2361   Timing problems
2362       The following tests may fail intermittently because of timing problems,
2363       for example if the system is heavily loaded.
2364
2365           t/op/alarm.t
2366           ext/Time/HiRes/HiRes.t
2367           lib/Benchmark.t
2368           lib/Memoize/t/expmod_t.t
2369           lib/Memoize/t/speed.t
2370
2371       In case of failure please try running them manually, for example
2372
2373           ./perl -Ilib ext/Time/HiRes/HiRes.t
2374
2375   Tied/Magical Array/Hash Elements Do Not Autovivify
2376       For normal arrays "$foo = \$bar[1]" will assign "undef" to $bar[1]
2377       (assuming that it didn't exist before), but for tied/magical arrays and
2378       hashes such autovivification does not happen because there is currently
2379       no way to catch the reference creation.  The same problem affects
2380       slicing over non-existent indices/keys of a tied/magical array/hash.
2381
2382   Unicode in package/class and subroutine names does not work
2383       One can have Unicode in identifier names, but not in package/class or
2384       subroutine names.  While some limited functionality towards this does
2385       exist as of Perl 5.8.0, that is more accidental than designed; use of
2386       Unicode for the said purposes is unsupported.
2387
2388       One reason of this unfinishedness is its (currently) inherent
2389       unportability: since both package names and subroutine names may need
2390       to be mapped to file and directory names, the Unicode capability of the
2391       filesystem becomes important-- and there unfortunately aren't portable
2392       answers.
2393

Platform Specific Problems

2395   AIX
2396       •   If using the AIX native make command, instead of just "make" issue
2397           "make all".  In some setups the former has been known to spuriously
2398           also try to run "make install".  Alternatively, you may want to use
2399           GNU make.
2400
2401       •   In AIX 4.2, Perl extensions that use C++ functions that use statics
2402           may have problems in that the statics are not getting initialized.
2403           In newer AIX releases, this has been solved by linking Perl with
2404           the libC_r library, but unfortunately in AIX 4.2 the said library
2405           has an obscure bug where the various functions related to time
2406           (such as time() and gettimeofday()) return broken values, and
2407           therefore in AIX 4.2 Perl is not linked against libC_r.
2408
2409       •   vac 5.0.0.0 May Produce Buggy Code For Perl
2410
2411           The AIX C compiler vac version 5.0.0.0 may produce buggy code,
2412           resulting in a few random tests failing when run as part of "make
2413           test", but when the failing tests are run by hand, they succeed.
2414           We suggest upgrading to at least vac version 5.0.1.0, that has been
2415           known to compile Perl correctly.  "lslpp -L|grep vac.C" will tell
2416           you the vac version.  See README.aix.
2417
2418       •   If building threaded Perl, you may get compilation warning from
2419           pp_sys.c:
2420
2421             "pp_sys.c", line 4651.39: 1506-280 (W) Function argument assignment between types "unsigned char*" and "const void*" is not allowed.
2422
2423           This is harmless; it is caused by the getnetbyaddr() and
2424           getnetbyaddr_r() having slightly different types for their first
2425           argument.
2426
2427   Alpha systems with old gccs fail several tests
2428       If you see op/pack, op/pat, op/regexp, or ext/Storable tests failing in
2429       a Linux/alpha or *BSD/Alpha, it's probably time to upgrade your gcc.
2430       gccs prior to 2.95.3 are definitely not good enough, and gcc 3.1 may be
2431       even better.  (RedHat Linux/alpha with gcc 3.1 reported no problems, as
2432       did Linux 2.4.18 with gcc 2.95.4.)  (In Tru64, it is preferable to use
2433       the bundled C compiler.)
2434
2435   AmigaOS
2436       Perl 5.8.0 doesn't build in AmigaOS.  It broke at some point during the
2437       ithreads work and we could not find Amiga experts to unbreak the
2438       problems.  Perl 5.6.1 still works for AmigaOS (as does the 5.7.2
2439       development release).
2440
2441   BeOS
2442       The following tests fail on 5.8.0 Perl in BeOS Personal 5.03:
2443
2444        t/op/lfs............................FAILED at test 17
2445        t/op/magic..........................FAILED at test 24
2446        ext/Fcntl/t/syslfs..................FAILED at test 17
2447        ext/File/Glob/t/basic...............FAILED at test 3
2448        ext/POSIX/t/sigaction...............FAILED at test 13
2449        ext/POSIX/t/waitpid.................FAILED at test 1
2450
2451       (Note: more information was available in README.beos until support for
2452       BeOS was removed in Perl v5.18.0)
2453
2454   Cygwin "unable to remap"
2455       For example when building the Tk extension for Cygwin, you may get an
2456       error message saying "unable to remap".  This is known problem with
2457       Cygwin, and a workaround is detailed in here:
2458       http://sources.redhat.com/ml/cygwin/2001-12/msg00894.html
2459
2460   Cygwin ndbm tests fail on FAT
2461       One can build but not install (or test the build of) the NDBM_File on
2462       FAT filesystems.  Installation (or build) on NTFS works fine.  If one
2463       attempts the test on a FAT install (or build) the following failures
2464       are expected:
2465
2466        ../ext/NDBM_File/ndbm.t       13  3328    71   59  83.10%  1-2 4 16-71
2467        ../ext/ODBM_File/odbm.t      255 65280    ??   ??       %  ??
2468        ../lib/AnyDBM_File.t           2   512    12    2  16.67%  1 4
2469        ../lib/Memoize/t/errors.t      0   139    11    5  45.45%  7-11
2470        ../lib/Memoize/t/tie_ndbm.t   13  3328     4    4 100.00%  1-4
2471        run/fresh_perl.t                          97    1   1.03%  91
2472
2473       NDBM_File fails and ODBM_File just coredumps.
2474
2475       If you intend to run only on FAT (or if using AnyDBM_File on FAT), run
2476       Configure with the -Ui_ndbm and -Ui_dbm options to prevent NDBM_File
2477       and ODBM_File being built.
2478
2479   DJGPP Failures
2480        t/op/stat............................FAILED at test 29
2481        lib/File/Find/t/find.................FAILED at test 1
2482        lib/File/Find/t/taint................FAILED at test 1
2483        lib/h2xs.............................FAILED at test 15
2484        lib/Pod/t/eol........................FAILED at test 1
2485        lib/Test/Harness/t/strap-analyze.....FAILED at test 8
2486        lib/Test/Harness/t/test-harness......FAILED at test 23
2487        lib/Test/Simple/t/exit...............FAILED at test 1
2488
2489       The above failures are known as of 5.8.0 with native builds with long
2490       filenames, but there are a few more if running under dosemu because of
2491       limitations (and maybe bugs) of dosemu:
2492
2493        t/comp/cpp...........................FAILED at test 3
2494        t/op/inccode.........................(crash)
2495
2496       and a few lib/ExtUtils tests, and several hundred Encode/t/Aliases.t
2497       failures that work fine with long filenames.  So you really might
2498       prefer native builds and long filenames.
2499
2500   FreeBSD built with ithreads coredumps reading large directories
2501       This is a known bug in FreeBSD 4.5's readdir_r(), it has been fixed in
2502       FreeBSD 4.6 (see perlfreebsd (README.freebsd)).
2503
2504   FreeBSD Failing locale Test 117 For ISO 8859-15 Locales
2505       The ISO 8859-15 locales may fail the locale test 117 in FreeBSD.  This
2506       is caused by the characters \xFF (y with diaeresis) and \xBE (Y with
2507       diaeresis) not behaving correctly when being matched case-
2508       insensitively.  Apparently this problem has been fixed in the latest
2509       FreeBSD releases.  ( http://www.freebsd.org/cgi/query-pr.cgi?pr=34308 )
2510
2511   IRIX fails ext/List/Util/t/shuffle.t or Digest::MD5
2512       IRIX with MIPSpro 7.3.1.2m or 7.3.1.3m compiler may fail the List::Util
2513       test ext/List/Util/t/shuffle.t by dumping core.  This seems to be a
2514       compiler error since if compiled with gcc no core dump ensues, and no
2515       failures have been seen on the said test on any other platform.
2516
2517       Similarly, building the Digest::MD5 extension has been known to fail
2518       with "*** Termination code 139 (bu21)".
2519
2520       The cure is to drop optimization level (Configure -Doptimize=-O2).
2521
2522   HP-UX lib/posix Subtest 9 Fails When LP64-Configured
2523       If perl is configured with -Duse64bitall, the successful result of the
2524       subtest 10 of lib/posix may arrive before the successful result of the
2525       subtest 9, which confuses the test harness so much that it thinks the
2526       subtest 9 failed.
2527
2528   Linux with glibc 2.2.5 fails t/op/int subtest #6 with -Duse64bitint
2529       This is a known bug in the glibc 2.2.5 with long long integers.  (
2530       http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=65612 )
2531
2532   Linux With Sfio Fails op/misc Test 48
2533       No known fix.
2534
2535   Mac OS X
2536       Please remember to set your environment variable LC_ALL to "C" (setenv
2537       LC_ALL C) before running "make test" to avoid a lot of warnings about
2538       the broken locales of Mac OS X.
2539
2540       The following tests are known to fail in Mac OS X 10.1.5 because of
2541       buggy (old) implementations of Berkeley DB included in Mac OS X:
2542
2543        Failed Test                 Stat Wstat Total Fail  Failed  List of Failed
2544        -------------------------------------------------------------------------
2545        ../ext/DB_File/t/db-btree.t    0    11    ??   ??       %  ??
2546        ../ext/DB_File/t/db-recno.t              149    3   2.01%  61 63 65
2547
2548       If you are building on a UFS partition, you will also probably see
2549       t/op/stat.t subtest #9 fail.  This is caused by Darwin's UFS not
2550       supporting inode change time.
2551
2552       Also the ext/POSIX/t/posix.t subtest #10 fails but it is skipped for
2553       now because the failure is Apple's fault, not Perl's (blocked signals
2554       are lost).
2555
2556       If you Configure with ithreads, ext/threads/t/libc.t will fail. Again,
2557       this is not Perl's fault-- the libc of Mac OS X is not threadsafe (in
2558       this particular test, the localtime() call is found to be
2559       threadunsafe.)
2560
2561   Mac OS X dyld undefined symbols
2562       If after installing Perl 5.8.0 you are getting warnings about missing
2563       symbols, for example
2564
2565           dyld: perl Undefined symbols
2566           _perl_sv_2pv
2567           _perl_get_sv
2568
2569       you probably have an old pre-Perl-5.8.0 installation (or parts of one)
2570       in /Library/Perl (the undefined symbols used to exist in pre-5.8.0
2571       Perls).  It seems that for some reason "make install" doesn't always
2572       completely overwrite the files in /Library/Perl.  You can move the old
2573       Perl shared library out of the way like this:
2574
2575           cd /Library/Perl/darwin/CORE
2576           mv libperl.dylib libperlold.dylib
2577
2578       and then reissue "make install".  Note that the above of course is
2579       extremely disruptive for anything using the /usr/local/bin/perl.  If
2580       that doesn't help, you may have to try removing all the .bundle files
2581       from beneath /Library/Perl, and again "make install"-ing.
2582
2583   OS/2 Test Failures
2584       The following tests are known to fail on OS/2 (for clarity only the
2585       failures are shown, not the full error messages):
2586
2587        ../lib/ExtUtils/t/Mkbootstrap.t    1   256    18    1   5.56%  8
2588        ../lib/ExtUtils/t/Packlist.t       1   256    34    1   2.94%  17
2589        ../lib/ExtUtils/t/basic.t          1   256    17    1   5.88%  14
2590        lib/os2_process.t                  2   512   227    2   0.88%  174 209
2591        lib/os2_process_kid.t                        227    2   0.88%  174 209
2592        lib/rx_cmprt.t                   255 65280    18    3  16.67%  16-18
2593
2594   op/sprintf tests 91, 129, and 130
2595       The op/sprintf tests 91, 129, and 130 are known to fail on some
2596       platforms.  Examples include any platform using sfio, and
2597       Compaq/Tandem's NonStop-UX.
2598
2599       Test 91 is known to fail on QNX6 (nto), because "sprintf '%e',0"
2600       incorrectly produces 0.000000e+0 instead of 0.000000e+00.
2601
2602       For tests 129 and 130, the failing platforms do not comply with the
2603       ANSI C Standard: lines 19ff on page 134 of ANSI X3.159 1989, to be
2604       exact.  (They produce something other than "1" and "-1" when formatting
2605       0.6 and -0.6 using the printf format "%.0f"; most often, they produce
2606       "0" and "-0".)
2607
2608   SCO
2609       The socketpair tests are known to be unhappy in SCO 3.2v5.0.4:
2610
2611        ext/Socket/socketpair.t...............FAILED tests 15-45
2612
2613   Solaris 2.5
2614       In case you are still using Solaris 2.5 (aka SunOS 5.5), you may
2615       experience failures (the test core dumping) in lib/locale.t.  The
2616       suggested cure is to upgrade your Solaris.
2617
2618   Solaris x86 Fails Tests With -Duse64bitint
2619       The following tests are known to fail in Solaris x86 with Perl
2620       configured to use 64 bit integers:
2621
2622        ext/Data/Dumper/t/dumper.............FAILED at test 268
2623        ext/Devel/Peek/Peek..................FAILED at test 7
2624
2625   SUPER-UX (NEC SX)
2626       The following tests are known to fail on SUPER-UX:
2627
2628        op/64bitint...........................FAILED tests 29-30, 32-33, 35-36
2629        op/arith..............................FAILED tests 128-130
2630        op/pack...............................FAILED tests 25-5625
2631        op/pow................................
2632        op/taint..............................# msgsnd failed
2633        ../ext/IO/lib/IO/t/io_poll............FAILED tests 3-4
2634        ../ext/IPC/SysV/ipcsysv...............FAILED tests 2, 5-6
2635        ../ext/IPC/SysV/t/msg.................FAILED tests 2, 4-6
2636        ../ext/Socket/socketpair..............FAILED tests 12
2637        ../lib/IPC/SysV.......................FAILED tests 2, 5-6
2638        ../lib/warnings.......................FAILED tests 115-116, 118-119
2639
2640       The op/pack failure ("Cannot compress negative numbers at op/pack.t
2641       line 126") is serious but as of yet unsolved.  It points at some
2642       problems with the signedness handling of the C compiler, as do the
2643       64bitint, arith, and pow failures.  Most of the rest point at problems
2644       with SysV IPC.
2645
2646   Term::ReadKey not working on Win32
2647       Use Term::ReadKey 2.20 or later.
2648
2649   UNICOS/mk
2650       •   During Configure, the test
2651
2652               Guessing which symbols your C compiler and preprocessor define...
2653
2654           will probably fail with error messages like
2655
2656               CC-20 cc: ERROR File = try.c, Line = 3
2657                 The identifier "bad" is undefined.
2658
2659                 bad switch yylook 79bad switch yylook 79bad switch yylook 79bad switch yylook 79#ifdef A29K
2660                 ^
2661
2662               CC-65 cc: ERROR File = try.c, Line = 3
2663                 A semicolon is expected at this point.
2664
2665           This is caused by a bug in the awk utility of UNICOS/mk.  You can
2666           ignore the error, but it does cause a slight problem: you cannot
2667           fully benefit from the h2ph utility (see h2ph) that can be used to
2668           convert C headers to Perl libraries, mainly used to be able to
2669           access from Perl the constants defined using C preprocessor, cpp.
2670           Because of the above error, parts of the converted headers will be
2671           invisible.  Luckily, these days the need for h2ph is rare.
2672
2673       •   If building Perl with interpreter threads (ithreads), the
2674           getgrent(), getgrnam(), and getgrgid() functions cannot return the
2675           list of the group members due to a bug in the multithreaded support
2676           of UNICOS/mk.  What this means is that in list context the
2677           functions will return only three values, not four.
2678
2679   UTS
2680       There are a few known test failures.  (Note: the relevant information
2681       was available in README.uts until support for UTS was removed in Perl
2682       v5.18.0)
2683
2684   VOS (Stratus)
2685       When Perl is built using the native build process on VOS Release 14.5.0
2686       and GNU C++/GNU Tools 2.0.1, all attempted tests either pass or result
2687       in TODO (ignored) failures.
2688
2689   VMS
2690       There should be no reported test failures with a default configuration,
2691       though there are a number of tests marked TODO that point to areas
2692       needing further debugging and/or porting work.
2693
2694   Win32
2695       In multi-CPU boxes, there are some problems with the I/O buffering:
2696       some output may appear twice.
2697
2698   XML::Parser not working
2699       Use XML::Parser 2.31 or later.
2700
2701   z/OS (OS/390)
2702       z/OS has rather many test failures but the situation is actually much
2703       better than it was in 5.6.0; it's just that so many new modules and
2704       tests have been added.
2705
2706        Failed Test                   Stat Wstat Total Fail  Failed  List of Failed
2707        ---------------------------------------------------------------------------
2708        ../ext/Data/Dumper/t/dumper.t              357    8   2.24%  311 314 325 327
2709                                                                     331 333 337 339
2710        ../ext/IO/lib/IO/t/io_unix.t                 5    4  80.00%  2-5
2711        ../ext/Storable/t/downgrade.t   12  3072   169   12   7.10%  14-15 46-47 78-79
2712                                                                     110-111 150 161
2713        ../lib/ExtUtils/t/Constant.t   121 30976    48   48 100.00%  1-48
2714        ../lib/ExtUtils/t/Embed.t                    9    9 100.00%  1-9
2715        op/pat.t                                   922    7   0.76%  665 776 785 832-
2716                                                                     834 845
2717        op/sprintf.t                               224    3   1.34%  98 100 136
2718        op/tr.t                                     97    5   5.15%  63 71-74
2719        uni/fold.t                                 780    6   0.77%  61 169 196 661
2720                                                                     710-711
2721
2722       The failures in dumper.t and downgrade.t are problems in the tests,
2723       those in io_unix and sprintf are problems in the USS (UDP sockets and
2724       printf formats).  The pat, tr, and fold failures are genuine Perl
2725       problems caused by EBCDIC (and in the pat and fold cases, combining
2726       that with Unicode).  The Constant and Embed are probably problems in
2727       the tests (since they test Perl's ability to build extensions, and that
2728       seems to be working reasonably well.)
2729
2730   Unicode Support on EBCDIC Still Spotty
2731       Though mostly working, Unicode support still has problem spots on
2732       EBCDIC platforms.  One such known spot are the "\p{}" and "\P{}"
2733       regular expression constructs for code points less than 256: the "pP"
2734       are testing for Unicode code points, not knowing about EBCDIC.
2735
2736   Seen In Perl 5.7 But Gone Now
2737       "Time::Piece" (previously known as "Time::Object") was removed because
2738       it was felt that it didn't have enough value in it to be a core module.
2739       It is still a useful module, though, and is available from the CPAN.
2740
2741       Perl 5.8 unfortunately does not build anymore on AmigaOS; this broke
2742       accidentally at some point.  Since there are not that many Amiga
2743       developers available, we could not get this fixed and tested in time
2744       for 5.8.0.  Perl 5.6.1 still works for AmigaOS (as does the 5.7.2
2745       development release).
2746
2747       The "PerlIO::Scalar" and "PerlIO::Via" (capitalised) were renamed as
2748       "PerlIO::scalar" and "PerlIO::via" (all lowercase) just before 5.8.0.
2749       The main rationale was to have all core PerlIO layers to have all
2750       lowercase names.  The "plugins" are named as usual, for example
2751       "PerlIO::via::QuotedPrint".
2752
2753       The "threads::shared::queue" and "threads::shared::semaphore" were
2754       renamed as "Thread::Queue" and "Thread::Semaphore" just before 5.8.0.
2755       The main rationale was to have thread modules to obey normal naming,
2756       "Thread::" (the "threads" and "threads::shared" themselves are more
2757       pragma-like, they affect compile-time, so they stay lowercase).
2758

Reporting Bugs

2760       If you find what you think is a bug, you might check the articles
2761       recently posted to the comp.lang.perl.misc newsgroup and the perl bug
2762       database at http://bugs.perl.org/ .  There may also be information at
2763       http://www.perl.com/ , the Perl Home Page.
2764
2765       If you believe you have an unreported bug, please run the perlbug
2766       program included with your release.  Be sure to trim your bug down to a
2767       tiny but sufficient test case.  Your bug report, along with the output
2768       of "perl -V", will be sent off to perlbug@perl.org to be analysed by
2769       the Perl porting team.
2770

SEE ALSO

2772       The Changes file for exhaustive details on what changed.
2773
2774       The INSTALL file for how to build Perl.
2775
2776       The README file for general stuff.
2777
2778       The Artistic and Copying files for copyright information.
2779

HISTORY

2781       Written by Jarkko Hietaniemi <jhi@iki.fi>.
2782
2783
2784
2785perl v5.38.2                      2023-11-30                    PERL58DELTA(1)
Impressum