=item *
-The PerlIO C<:raw> discipline (as described in Camel III) is deprecated
-because its definition (as either the discipline version of C<binmode(FH)>
-or as the opposite of C<:crlf>) didn't really work: most importantly
-because turning off "clrfness" is not enough to make a stream truly
-binary. Instead of C<:raw> use one of the following: C<open(..., ':bytes')>,
-C<binmode(FH)>, C<sysopen()> + C<sysread()>.
+Previous versions of perl and some readings of some sections of Camel III
+implied that the C<:raw> "discipline" was the inverse of C<:crlf>.
+Turning off "clrfness" is no longer enough to make a stream truly
+binary. So the PerlIO C<:raw> layer (or "discipline", to use the
+Camel book's older terminology) is now formally defined as being
+equivalent to binmode(FH) - which is in turn defined as doing whatever
+is necessary to pass each byte as-is without any translation.
+In particular binmode(FH) - and hence C<:raw> - will now turn off both CRLF
+and UTF-8 translation and remove other layers (e.g. :encoding()) which
+would modify byte stream.
=item *
ugly, but the current implementation slows down normal array and hash
use quite noticeably. The C<fields> pragma interface will remain
available. The I<restricted hashes> interface is expected to
-be the replacement interface (see L<Hash::Util>).
+be the replacement interface (see L<Hash::Util>). If your existing
+programs depends on the underlying implementation, consider using
+L<Class::PseudoHash> from CPAN.
=item *
=item *
If your platform supports fork(), you can use the list form of C<open>
-for pipes:
+for pipes. For example:
open KID_PS, "-|", "ps", "aux" or die $!;
forks the ps(1) command (without spawning a shell, as there are more
than three arguments to open()), and reads its standard output via the
-C<KID_PS> filehandle.
+C<KID_PS> filehandle. See L<perlipc>.
=item *
If your environment variables (LC_ALL, LC_CTYPE, LANG, LANGUAGE) look
like you want to use UTF-8 (any of the the variables match C</utf-?8/i>),
-your STDIN, STDOUT, STDERR handles and the default open discipline
+your STDIN, STDOUT, STDERR handles and the default open layer
(see L<open>) are marked as UTF-8. (This feature, like other new
features that combine Unicode and I/O, work only if you are using
-PerlIO, but that's is the default.)
+PerlIO, but that's the default.)
Note that after this Perl really does assume that everything is UTF-8:
for example if some input handle is not, Perl will probably very soon
NOTE: the C<MD5> backward compatibility module is deliberately not
included since its further use is discouraged.
+See also L<PerlIO::via::QuotedPrint>.
+
=item *
C<Encode>, originally by Nick Ing-Simmons and now maintained by Dan
print $encoded, "\n"; # "Smiley in Unicode: =263A"
-MIME::QuotedPrint has been enhanced to provide the basic methods
-necessary to use it with PerlIO::Via as in :
-
- use MIME::QuotedPrint;
- open($fh,">Via(MIME::QuotedPrint)",$path);
-
-See L<MIME::QuotedPrint>.
+See also L<PerlIO::via::QuotedPrint>.
=item *
=item *
-C<open> is a new pragma for setting the default I/O disciplines
+C<open> is a new pragma for setting the default I/O layers
for open().
=item *
-C<PerlIO::Scalar>, by Nick Ing-Simmons, provides the implementation
+C<PerlIO::scalar>, by Nick Ing-Simmons, provides the implementation
of IO to "in memory" Perl scalars as discussed above. It also serves
as an example of a loadable PerlIO layer. Other future possibilities
-include PerlIO::Array and PerlIO::Code. See L<PerlIO::Scalar>.
+include PerlIO::Array and PerlIO::Code. See L<PerlIO::scalar>.
=item *
-C<PerlIO::Via>, by Nick Ing-Simmons, acts as a PerlIO layer and wraps
+C<PerlIO::via>, by Nick Ing-Simmons, acts as a PerlIO layer and wraps
PerlIO layer functionality provided by a class (typically implemented
-in perl code).
+in Perl code).
- use MIME::QuotedPrint;
- open($fh,">Via(MIME::QuotedPrint)",$path);
+=item *
+
+C<PerlIO::via::QuotedPrint>, by Elizabeth Mattijsen, is an example
+of a C<PerlIO::via> class:
-This will automatically convert everything output to C<$fh>
-to Quoted-Printable. See L<PerlIO::Via>.
+ use PerlIO::via::QuotedPrint;
+ open($fh,">:via(QuotedPrint)",$path);
+
+This will automatically convert everything output to C<$fh> to
+Quoted-Printable. See L<PerlIO::via> and L<PerlIO::via::QuotedPrint>.
=item *
C<Storable> gives persistence to Perl data structures by allowing the
storage and retrieval of Perl data to and from files in a fast and
compact binary format. Because in effect Storable does serialisation
-of Perl data structues, with it you can also clone deep, hierarchical
+of Perl data structures, with it you can also clone deep, hierarchical
datastructures. Storable was originally created by Raphael Manfredi,
but it is now maintained by Abhijit Menon-Sen. Storable has been
enhanced to understand the two new hash features, Unicode keys and
The arguments of WriteMakefile() in Makefile.PL are now checked
for sanity much more carefully than before. This may cause new
-warnings when modules are being insalled. See L<ExtUtils::MakeMaker>
+warnings when modules are being installed. See L<ExtUtils::MakeMaker>
for more details.
=item *
=item *
-The DYNIX/ptx platform (a.k.a. dynixptx) is supported at or near
-osvers 4.5.2.
+The DYNIX/ptx platform (also known as dynixptx) is supported at or
+near osvers 4.5.2.
=item *
(This change was already made in 5.7.0 but bears repeating here.)
(5.7.0 came out before 5.6.1: the development branch 5.7 released
-sooner than the maintenance branch 5.6)
+earlier than the maintenance branch 5.6)
A potential security vulnerability in the optional suidperl component
of Perl was identified in August 2000. suidperl is neither built nor
=head1 New Tests
-Several new tests have been added, especially for the F<lib> and F<ext>
-subsections. There are now about 65 000 individual tests (spread over
-about 700 test scripts), in the regression suite (5.6.1 has about
-11700 tests, in 258 test scripts) Many of the new tests are of course
-introduced by the new modules, but still in general Perl is now more
-thoroughly tested.
+Several new tests have been added, especially for the F<lib> and
+F<ext> subsections. There are now about 69 000 individual tests
+(spread over about 700 test scripts), in the regression suite (5.6.1
+has about 11 700 tests, in 258 test scripts) The exact numbers depend
+on the platform and Perl configuration used. Many of the new tests
+are of course introduced by the new modules, but still in general Perl
+is now more thoroughly tested.
Because of the large number of tests, running the regression suite
will take considerably longer time than it used to: expect the suite
t/op/lfs............................FAILED at test 17
t/op/magic..........................FAILED at test 24
+ ext/Fcntl/t/syslfs..................FAILED at test 17
+ ext/File/Glob/t/basic...............FAILED at test 3
ext/POSIX/t/sigaction...............FAILED at test 13
ext/POSIX/t/waitpid.................FAILED at test 1
This is known problem with Cygwin, and a workaround is
detailed in here: http://sources.redhat.com/ml/cygwin/2001-12/msg00894.html
+=head2 Cygwin ndbm tests fail on FAT
+
+One can build but not install (or test the build of) the NDBM_File
+on FAT filesystems. Installation (or build) on NTFS works fine.
+
=head2 ext/threads/t/libc
If this test fails, it indicates that your libc (C library) is not
The following tests are known to fail on OS/2 (for clarity
only the failures are shown, not the full error messages):
-t/io/utf8............................FAILED at test 19
-t/op/grent...........................FAILED at test 2
-t/op/pwent...........................FAILED at test 1
-t/lib/os2_base.......................FAILED at test 13
-t/lib/os2_process....................FAILED at test 10
-t/lib/os2_process_kid................FAILED at test 10
-t/lib/rx_cmprt.......................FAILED at test 16
-ext/DB_File/t/db-btree...............FAILED at test 0
-ext/DB_File/t/db-hash................FAILED at test 0
-ext/DB_File/t/db-recno...............FAILED at test 0
-lib/ExtUtils/t/basic.................FAILED at test 14
-lib/ExtUtils/t/Constant..............FAILED at test 4
-lib/Memoize/t/errors.................FAILED at test 4
+ t/io/utf8............................FAILED at test 19
+ t/op/grent...........................FAILED at test 2
+ t/op/pwent...........................FAILED at test 1
+ t/lib/os2_base.......................FAILED at test 13
+ t/lib/os2_process....................FAILED at test 10
+ t/lib/os2_process_kid................FAILED at test 10
+ t/lib/rx_cmprt.......................FAILED at test 16
+ ext/DB_File/t/db-btree...............FAILED at test 0
+ ext/DB_File/t/db-hash................FAILED at test 0
+ ext/DB_File/t/db-recno...............FAILED at test 0
+ lib/ExtUtils/t/basic.................FAILED at test 14
+ lib/ExtUtils/t/Constant..............FAILED at test 4
+ lib/Memoize/t/errors.................FAILED at test 4
=head2 op/sprintf tests 91, 129, and 130
./perl -Ilib ext/Time/HiRes/HiRes.t
+=head2 Unicode in package/class and subroutine names does not work
+
+One can have Unicode in identifier names, but not in package/class or
+subroutine names. While some limited functionality towards this does
+exist as of Perl 5.8.0, that is more accidental than designed; use of
+Unicode for the said purposes is unsupported.
+
+One reason of this unfinishedness is its (currently) inherent
+unportability: since both package names and subroutine names may
+need to be mapped to file and directory names, the Unicode capability
+of the filesystem becomes important-- and there unfortunately aren't
+portable answers.
+
=head2 UNICOS/mk
=over 4
---------------------------------------------------------------------------
../ext/Data/Dumper/t/dumper.t 357 8 2.24% 311 314 325 327
331 333 337 339
+ ../ext/IO/lib/IO/t/io_pipe.t 10 2 20.00% 1 3
../ext/IO/lib/IO/t/io_unix.t 5 4 80.00% 2-5
../ext/Storable/t/downgrade.t 12 3072 169 12 7.10% 14-15 46-47 78-79
110-111 150 161
../lib/ExtUtils/t/Constant.t 121 30976 48 48 100.00% 1-48
../lib/ExtUtils/t/Embed.t 9 9 100.00% 1-9
- op/pat.t 910 7 0.77% 665 776 785 832-
- 834 845
+ ../lib/strict.t 97 67 69.07% 2-10 15-17 20-21
+ ...
+ ../lib/warnings.t 478 404 84.52% 1-11 13-20 22 24-
+ ...
+ op/anonsub.t 5 5 100.00% 1-5
+ op/closure.t 171 150 87.72% 22-171
+ op/fork.t 18 18 100.00% 1-18
+ op/goto.t 22 1 4.55% 3
+ op/magic.t 0 13 46 44 95.65% 3-46
+ op/pat.t 0 11 922 283 30.69% 640-922
+ op/runlevel.t 21 20 95.24% 1-14 16-21
+ op/split.t 46 1 2.17% 11
op/sprintf.t 224 3 1.34% 98 100 136
+ op/stat.t 73 2 2.74% 41-42
+ op/subst.t 122 2 1.64% 91-92
+ op/subst_wamp.t 122 2 1.64% 91-92
+ op/taint.t 203 4 1.97% 1 3 31 37
op/tr.t 97 5 5.15% 63 71-74
+ run/fresh_perl.t 97 1 1.03% 11
+ run/runenv.t 11 11 100.00% 1-11
uni/fold.t 780 6 0.77% 61 169 196 661
710-711
The failures in dumper.t and downgrade.t are problems in the tests,
-those in io_unix and sprintf are problems in the USS (UDP sockets
-and printf formats). The pat, tr, and fold failures are genuine Perl
+those in io_unix and sprintf are problems in the USS (UDP sockets and
+printf formats). The pat, tr, and fold failures are genuine Perl
problems caused by EBCDIC (and in the pat and fold cases, combining
-that with Unicode). The Constant and Embed are probably problems
-in the tests (since they test Perl's ability to build extensions,
-and that seems to be working reasonably well.)
+that with Unicode). The Constant and Embed are probably problems in
+the tests (since they test Perl's ability to build extensions, and
+that seems to be working reasonably well.) The rest of the failures
+are mostly problems in Perl trying to show a warning through STDERR
+but the test harness for some as of yet unknown reason failing to see
+the warning (especially the numerous warnings.t failures are of this
+kind).
=head2 Localising Tied Arrays and Hashes Is Broken
for 5.8.0. Perl 5.6.1 still works for AmigaOS (as does the the 5.7.2
development release).
+The C<PerlIO::Scalar> and C<PerlIO::Via> (capitalised) were renamed as
+C<PerlIO::scalar> and C<PerlIO::via> (all lowercase) just before 5.8.0.
+The main rationale was to have all core IO layers to have all
+lowercase names. The "plugins" are named as usual, for example
+C<PerlIO::via::QuotedPrint>.
+
=head1 Reporting Bugs
If you find what you think is a bug, you might check the articles