up patchlevel &c
[p5sagit/p5-mst-13.2.git] / pod / perldelta.pod
CommitLineData
ba8251e8 1=head1 NAME
2
f29c64d6 3perldelta - what's new for perl v5.6 (as of v5.005_58)
ba8251e8 4
5=head1 DESCRIPTION
6
f29c64d6 7This is an unsupported alpha release, meant for intrepid Perl developers
8only. The included sources may not even build correctly on some platforms.
9Subscribing to perl5-porters is the best way to monitor and contribute
10to the progress of development releases (see www.perl.org for info).
11
ba8251e8 12This document describes differences between the 5.005 release and this one.
13
14=head1 Incompatible Changes
15
e02fdbd2 16=head2 Perl Source Incompatibilities
17
f29c64d6 18TODO
e02fdbd2 19
20=head2 C Source Incompatibilities
21
22=over 4
23
24=item C<PERL_POLLUTE>
25
26Release 5.005 grandfathered old global symbol names by providing preprocessor
87275199 27macros for extension source compatibility. As of release 5.6, these
e02fdbd2 28preprocessor definitions are not available by default. You need to explicitly
14218588 29compile perl with C<-DPERL_POLLUTE> to get these definitions. For
30extensions still using the old symbols, this option can be
2aea4d40 31specified via MakeMaker:
32
14218588 33 perl Makefile.PL POLLUTE=1
e02fdbd2 34
f29c64d6 35=item C<PERL_IMPLICIT_CONTEXT>
36
37This new build option provides a set of macros for all API functions
38such that an implicit interpreter/thread context argument is passed to
39every API function. As a result of this, something like C<sv_setsv(foo,bar)>
2c2d71f5 40amounts to a macro invocation that actually translates to something like
f29c64d6 41C<Perl_sv_setsv(my_perl,foo,bar)>. While this is generally expected
42to not have any significant source compatibility issues, the difference
43between a macro and a real function call will need to be considered.
44
2c2d71f5 45This means that there B<is> a source compatibility issue as a result of
46this if your extensions attempt to use pointers to any of the Perl API
47functions.
48
f29c64d6 49Note that the above issue is not relevant to the default build of
50Perl, whose interfaces continue to match those of prior versions
51(but subject to the other options described here).
52
53For testing purposes, the 5.005_58 release automatically enables
54PERL_IMPLICIT_CONTEXT whenever Perl is built with -Dusethreads or
55-Dusemultiplicity.
56
2c2d71f5 57See L<perlguts/"The Perl API"> for detailed information on the
58ramifications of building Perl using this option.
59
86058a2d 60=item C<PERL_POLLUTE_MALLOC>
61
14218588 62Enabling Perl's malloc in release 5.005 and earlier caused
86058a2d 63the namespace of system versions of the malloc family of functions to
14218588 64be usurped by the Perl versions, since by default they used the
65same names.
86058a2d 66
67Besides causing problems on platforms that do not allow these functions to
68be cleanly replaced, this also meant that the system versions could not
69be called in programs that used Perl's malloc. Previous versions of Perl
14218588 70have allowed this behaviour to be suppressed with the HIDEMYMALLOC and
86058a2d 71EMBEDMYMALLOC preprocessor definitions.
72
87275199 73As of release 5.6, Perl's malloc family of functions have default names
86058a2d 74distinct from the system versions. You need to explicitly compile perl with
14218588 75C<-DPERL_POLLUTE_MALLOC> to get the older behaviour. HIDEMYMALLOC
76and EMBEDMYMALLOC have no effect, since the behaviour they enabled is now
86058a2d 77the default.
78
79Note that these functions do B<not> constitute Perl's memory allocation API.
80See L<perlguts/"Memory Allocation"> for further information about that.
81
e02fdbd2 82=item C<PL_na> and C<dTHR> Issues
83
84The C<PL_na> global is now thread local, so a C<dTHR> declaration is needed
14218588 85in the scope in which the global appears. XSUBs should handle this automatically,
e02fdbd2 86but if you have used C<PL_na> in support functions, you either need to
87change the C<PL_na> to a local variable (which is recommended), or put in
88a C<dTHR>.
89
90=back
91
cceca5ed 92=head2 Compatible C Source API Changes
93
94=over
95
96=item C<PATCHLEVEL> is now C<PERL_VERSION>
97
14218588 98The cpp macros C<PERL_REVISION>, C<PERL_VERSION>, and C<PERL_SUBVERSION>
cceca5ed 99are now available by default from perl.h, and reflect the base revision,
14218588 100patchlevel, and subversion respectively. C<PERL_REVISION> had no
cceca5ed 101prior equivalent, while C<PERL_VERSION> and C<PERL_SUBVERSION> were
102previously available as C<PATCHLEVEL> and C<SUBVERSION>.
103
14218588 104The new names cause less pollution of the B<cpp> namespace and reflect what
cceca5ed 105the numbers have come to stand for in common practice. For compatibility,
14218588 106the old names are still supported when F<patchlevel.h> is explicitly
cceca5ed 107included (as required before), so there is no source incompatibility
14218588 108from the change.
cceca5ed 109
110=back
111
e02fdbd2 112=head2 Binary Incompatibilities
113
9c107f78 114The default build of this release is binary compatible with the 5.005
115release or its maintenance versions.
f29c64d6 116
117The usethreads or usemultiplicity builds are B<not> binary compatible
118with the corresponding builds in 5.005.
e02fdbd2 119
ba8251e8 120=head1 Core Changes
121
9d73390d 122=head2 Unicode and UTF-8 support
123
124Perl can optionally use UTF-8 as its internal representation for character
125strings. The C<use utf8> pragma enables this support in the current lexical
126scope. See L<utf8> for more information.
127
128=head2 Lexically scoped warning categories
129
130You can now control the granularity of warnings emitted by perl at a finer
0453d815 131level using the C<use warning> pragma. See L<warning> and L<perllexwarn>
132for details.
9d73390d 133
5fdc711f 134=head2 Binary numbers supported
135
4f19785b 136Binary numbers are now supported as literals, in s?printf formats, and
137C<oct()>:
138
14218588 139 $answer = 0b101010;
140 printf "The answer is: %b\n", oct("0b101010");
4f19785b 141
5fdc711f 142=head2 syswrite() ease-of-use
143
6c67e1bb 144The length argument of C<syswrite()> is now optional.
145
5fdc711f 146=head2 64-bit support
147
9c107f78 148All platforms that have 64-bit integers either (a) natively as longs
149or ints (b) via special compiler flags (c) using long long are able to
150use "quads" (64-integers) as follows:
151
152=over 4
153
154=item constants in the code
155
156=item arguments to oct() and hex()
157
158=item arguments to print(), printf() and sprintf()
159
160=item pack() and unpack() "q" format
161
162=item in basic arithmetics
163
164=back
165
166Note that unless you have the case (a) you will have to configure
167and compile Perl using the -Duse64bits Configure flag.
168
169Unfortunately, bit operations (&, <<, ...) and vec() do not work,
170they are limited to 32 bits.
171
2d4389e4 172Last but not least: note that due to Perl's habit of always using
173floating point numbers the quads are still not true integers. When
174quads overflow their limits (18446744073709551615 unsigned,
175-9223372036854775808...9223372036854775807 signed), they are silently
176promoted to floating point numbers, after which they will
177start losing precision (their lower digits).
178
179=head2 Large file support
180
181If you have filesystems that support "large files" (files larger than
1822 gigabytes), you may now also be able to create and access them from Perl.
183
184Note that in addition to requiring a proper file system to do this you
185may also need to adjust your per-process (or even your per-system)
186maximum filesize limits before running Perl scripts that try to handle
187large files, especially if you intend to write such files.
188
189Adjusting your file system/system limits is outside the scope of Perl.
190For process limits, you may try to increase the limits using your
191shell's limit/ulimit command before running Perl. The BSD::Resource
192extension (not included with the standard Perl distribution) may also
193be of use.
194
195(Large file support is also related to 64-bit support, for obvious reasons)
196
62c18ce2 197=head2 Better syntax checks on parenthesized unary operators
198
199Expressions such as:
200
14218588 201 print defined(&foo,&bar,&baz);
202 print uc("foo","bar","baz");
203 undef($foo,&bar);
62c18ce2 204
7711098a 205used to be accidentally allowed in earlier versions, and produced
14218588 206unpredictable behaviour. Some produced ancillary warnings
207when used in this way; others silently did the wrong thing.
62c18ce2 208
209The parenthesized forms of most unary operators that expect a single
14218588 210argument now ensure that they are not called with more than one
211argument, making the cases shown above syntax errors. The usual
212behaviour of:
62c18ce2 213
14218588 214 print defined &foo, &bar, &baz;
215 print uc "foo", "bar", "baz";
216 undef $foo, &bar;
62c18ce2 217
218remains unchanged. See L<perlop>.
219
3e3318e7 220=head2 POSIX character class syntax [: :] supported
221
222For example to match alphabetic characters use /[[:alpha:]]/.
223See L<perlre> for details.
224
5a929a98 225=head2 Improved C<qw//> operator
8127e0e3 226
26ef7447 227The C<qw//> operator is now evaluated at compile time into a true list
228instead of being replaced with a run time call to C<split()>. This
14218588 229removes the confusing misbehaviour of C<qw//> in scalar context, which
230had inherited that behaviour from split().
26ef7447 231
232Thus:
233
234 $foo = ($bar) = qw(a b c); print "$foo|$bar\n";
235
236now correctly prints "3|a", instead of "2|a".
8127e0e3 237
5a929a98 238=head2 pack() format 'Z' supported
239
240The new format type 'Z' is useful for packing and unpacking null-terminated
241strings. See L<perlfunc/"pack">.
242
4d0c1c44 243=head2 pack() format modifier '!' supported
ee3907e2 244
14218588 245The new format type modifier '!' is useful for packing and unpacking
ee3907e2 246native shorts, ints, and longs. See L<perlfunc/"pack">.
247
f29c64d6 248=head2 pack() and unpack() support counted strings
249
250The template character '#' can be used to specify a counted string
251type to be packed or unpacked. See L<perlfunc/"pack">.
252
2b92dfce 253=head2 $^X variables may now have names longer than one character
254
255Formerly, $^X was synonymous with ${"\cX"}, but $^XY was a syntax
256error. Now variable names that begin with a control character may be
257arbitrarily long. However, for compatibility reasons, these variables
258I<must> be written with explicit braces, as C<${^XY}> for example.
14218588 259C<${^XYZ}> is synonymous with ${"\cXYZ"}. Variable names with more
2b92dfce 260than one control character, such as C<${^XY^Z}>, are illegal.
261
14218588 262The old syntax has not changed. As before, `^X' may be either a
263literal control-X character or the two-character sequence `caret' plus
264`X'. When braces are omitted, the variable name stops after the
2b92dfce 265control character. Thus C<"$^XYZ"> continues to be synonymous with
7711098a 266C<$^X . "YZ"> as before.
2b92dfce 267
268As before, lexical variables may not have names beginning with control
269characters. As before, variables whose names begin with a control
14218588 270character are always forced to be in package `main'. All such variables
271are reserved for future extensions, except those that begin with
272C<^_>, which may be used by user programs and is guaranteed not to
273acquire special meaning in any future version of Perl.
2b92dfce 274
fbad3eb5 275=head1 Significant bug fixes
276
277=head2 E<lt>HANDLEE<gt> on empty files
278
279With C<$/> set to C<undef>, slurping an empty file returns a string of
14218588 280zero length (instead of C<undef>, as it used to) the first time the
281HANDLE is read. Further reads yield C<undef>.
fbad3eb5 282
283This means that the following will append "foo" to an empty file (it used
14218588 284to do nothing):
fbad3eb5 285
286 perl -0777 -pi -e 's/^/foo/' empty_file
287
14218588 288The behaviour of:
fbad3eb5 289
290 perl -pi -e 's/^/foo/' empty_file
291
292is unchanged (it continues to leave the file empty).
293
0244c3a4 294=head2 C<eval '...'> improvements
295
296Line numbers (as reflected by caller() and most diagnostics) within
297C<eval '...'> were often incorrect when here documents were involved.
298This has been corrected.
299
300Lexical lookups for variables appearing in C<eval '...'> within
301functions that were themselves called within an C<eval '...'> were
14218588 302searching the wrong place for lexicals. The lexical search now
303correctly ends at the subroutine's block boundary.
0244c3a4 304
305Parsing of here documents used to be flawed when they appeared as
306the replacement expression in C<eval 's/.../.../e'>. This has
307been fixed.
308
45bc9206 309=head2 Automatic flushing of output buffers
310
14218588 311fork(), exec(), system(), qx//, and pipe open()s now flush buffers
312of all files opened for output when the operation
313was attempted. This mostly eliminates confusing
45bc9206 314buffering mishaps suffered by users unaware of how Perl internally
14218588 315handles I/O.
45bc9206 316
af8c498a 317=head2 Better diagnostics on meaningless filehandle operations
318
319Constructs such as C<open(E<lt>FHE<gt>)> and C<close(E<lt>FHE<gt>)>
320are compile time errors. Attempting to read from filehandles that
321were opened only for writing will now produce warnings (just as
322writing to read-only filehandles does).
323
54195c32 324=head2 Buffered data discarded from input filehandle when dup'ed.
325
326C<open(NEW, "E<lt>&OLD")> now discards any data that was previously
327read and buffered in C<OLD>. The next read operation on C<NEW> will
328return the same data as the corresponding operation on C<OLD>.
329Formerly, it would have returned the data from the start of the
330following disk block instead.
331
ba8251e8 332=head1 Supported Platforms
333
5fdc711f 334=over 4
335
336=item *
337
6c67e1bb 338VM/ESA is now supported.
339
5fdc711f 340=item *
341
ee3907e2 342Siemens BS2000 is now supported under the POSIX Shell.
343
344=item *
345
2bb14304 346The Mach CThreads (NEXTSTEP, OPENSTEP) are now supported by the Thread
347extension.
6c67e1bb 348
5fdc711f 349=item *
350
ee3907e2 351GNU/Hurd is now supported.
6c67e1bb 352
00ad96e1 353=item *
354
355Rhapsody is now supported.
356
27806c82 357=item *
358
359EPOC is is now supported (on Psion 5).
360
5fdc711f 361=back
362
6c67e1bb 363=head1 New tests
364
365=over 4
366
367=item op/io_const
368
369IO constants (SEEK_*, _IO*).
14218588 370
6c67e1bb 371=item op/io_dir
372
373Directory-related IO methods (new, read, close, rewind, tied delete).
374
375=item op/io_multihomed
376
377INET sockets with multi-homed hosts.
378
379=item op/io_poll
380
381IO poll().
382
383=item op/io_unix
384
385UNIX sockets.
386
387=item op/filetest
388
389File test operators.
390
391=item op/lex_assign
392
5fdc711f 393Verify operations that access pad objects (lexicals and temporaries).
6c67e1bb 394
395=back
e02fdbd2 396
ba8251e8 397=head1 Modules and Pragmata
398
3e8c4fa0 399=head2 Modules
400
b7d8191e 401=over 4
402
f29c64d6 403=item ByteLoader
404
405The ByteLoader is a dedication extension to generate and run
406Perl bytecode. See L<ByteLoader>.
407
408=item B
409
410The Perl Compiler suite has been extensively reworked for this
411release.
412
413=item Devel::DProf
414
415Devel::DProf, a Perl source code profiler has been added.
416
b7d8191e 417=item Dumpvalue
418
419Added Dumpvalue module provides screen dumps of Perl data.
420
421=item Benchmark
422
868cb350 423You can now run tests for I<n> seconds instead of guessing the right
14218588 424number of tests to run: e.g. timethese(-5, ...) will run each
425code for at least 5 CPU seconds. Zero as the "number of repetitions"
155776c0 426means "for at least 3 CPU seconds". The output format has also
14218588 427changed. For example:
155776c0 428
429use Benchmark;$x=3;timethese(-5,{a=>sub{$x*$x},b=>sub{$x**2}})
430
431will now output something like this:
432
433Benchmark: running a, b, each for at least 5 CPU seconds...
434 a: 5 wallclock secs ( 5.77 usr + 0.00 sys = 5.77 CPU) @ 200551.91/s (n=1156516)
435 b: 4 wallclock secs ( 5.00 usr + 0.02 sys = 5.02 CPU) @ 159605.18/s (n=800686)
436
437New features: "each for at least N CPU seconds...", "wallclock secs",
438and the "@ operations/CPU second (n=operations)".
b7d8191e 439
f505c983 440=item Devel::Peek
441
442The Devel::Peek module provides access to the internal representation
14218588 443of Perl variables and data. It is a data debugging tool for the XS programmer.
f505c983 444
b7d8191e 445=item Fcntl
446
447More Fcntl constants added: F_SETLK64, F_SETLKW64, O_LARGEFILE for
14218588 448large (more than 4G) file access (64-bit support is not yet
b7d8191e 449working, though, so no need to get overly excited), Free/Net/OpenBSD
450locking behaviour flags F_FLOCK, F_POSIX, Linux F_SHLCK, and
451O_ACCMODE: the mask of O_RDONLY, O_WRONLY, and O_RDWR.
452
f505c983 453=item File::Spec
454
455New methods have been added to the File::Spec module: devnull() returns
19799a22 456the name of the null device (/dev/null on Unix) and tmpdir() the name of
14218588 457the temp directory (normally /tmp on Unix). There are now also methods
f505c983 458to convert between absolute and relative filenames: abs2rel() and
14218588 459rel2abs(). For compatibility with operating systems that specify volume
460names in file paths, the splitpath(), splitdir(), and catdir() methods
f505c983 461have been added.
462
463=item File::Spec::Functions
464
465The new File::Spec::Functions modules provides a function interface
14218588 466to the File::Spec module. Allows shorthand
f505c983 467
14218588 468 $fullname = catfile($dir1, $dir2, $file);
f505c983 469
470instead of
471
14218588 472 $fullname = File::Spec->catfile($dir1, $dir2, $file);
f505c983 473
e16b8f49 474=item Math::BigInt
475
14218588 476The logical operations C<E<lt>E<lt>>, C<E<gt>E<gt>>, C<&>, C<|>,
e16b8f49 477and C<~> are now supported on bigints.
478
b7d8191e 479=item Math::Complex
7711098a 480
14218588 481The accessor methods Re, Im, arg, abs, rho, and theta can now also
868cb350 482act as mutators (accessor $z->Re(), mutator $z->Re(3)).
b7d8191e 483
484=item Math::Trig
485
14218588 486A little bit of radial trigonometry (cylindrical and spherical),
487radial coordinate conversions, and the great circle distance were added.
b7d8191e 488
f4b9d880 489=item SDBM_File
490
491An EXISTS method has been added to this module (and sdbm_exists() has
492been added to the underlying sdbm library), so one can now call exists
14218588 493on an SDBM_File tied hash and get the correct result, rather than a
f4b9d880 494runtime error.
495
06ef4121 496=item Time::Local
497
498The timelocal() and timegm() functions used to silently return bogus
499results when the date exceeded the machine's integer range. They
14218588 500now consistently croak() if the date falls in an unsupported range.
06ef4121 501
8fe0a5c4 502=item Win32
503
504The error return value in list context has been changed for all functions
14218588 505that return a list of values. Previously these functions returned a list
506with a single element C<undef> if an error occurred. Now these functions
507return the empty list in these situations. This applies to the following
8fe0a5c4 508functions:
509
14218588 510 Win32::FsType
511 Win32::GetOSVersion
8fe0a5c4 512
513The remaining functions are unchanged and continue to return C<undef> on
514error even in list context.
515
516The Win32::SetLastError(ERROR) function has been added as a complement
517to the Win32::GetLastError() function.
518
519The new Win32::GetFullPathName(FILENAME) returns the full absolute
14218588 520pathname for FILENAME in scalar context. In list context it returns
521a two-element list containing the fully qualified directory name and
8fe0a5c4 522the filename.
523
9fe6733a 524=item DBM Filters
525
526A new feature called "DBM Filters" has been added to all the
14218588 527DBM modules--DB_File, GDBM_File, NDBM_File, ODBM_File, and SDBM_File.
528DBM Filters add four new methods to each DBM module:
9fe6733a 529
530 filter_store_key
531 filter_store_value
532 filter_fetch_key
533 filter_fetch_value
534
14218588 535These can be used to filter key-value pairs before the pairs are
9fe6733a 536written to the database or just after they are read from the database.
537See L<perldbmfilter> for further information.
538
b7d8191e 539=back
3e8c4fa0 540
541=head2 Pragmata
542
14218588 543C<use utf8> to enable UTF-8 and Unicode support.
43165c05 544
545C<use caller 'encoding'> allows modules to inherit pragmatic attributes
546from the caller's context. C<encoding> is currently the only supported
547attribute.
9d73390d 548
549Lexical warnings pragma, C<use warning;>, to control optional warnings.
6c67e1bb 550
14218588 551C<use filetest> to control the behaviour of filetests (C<-r> C<-w> ...).
6c67e1bb 552Currently only one subpragma implemented, "use filetest 'access';",
14218588 553that enables the use of access(2) or equivalent to check
6c67e1bb 554permissions instead of using stat(2) as usual. This matters
14218588 555in filesystems where there are ACLs (access control lists): the
556stat(2) might lie, but access(2) knows better.
6c67e1bb 557
ba8251e8 558=head1 Utility Changes
559
e02fdbd2 560Todo.
561
ba8251e8 562=head1 Documentation Changes
563
5fdc711f 564=over 4
565
566=item perlopentut.pod
f8284313 567
5fdc711f 568A tutorial on using open() effectively.
569
570=item perlreftut.pod
571
572A tutorial that introduces the essentials of references.
573
14218588 574=item perltootc.pod
575
576A tutorial on managing class data for object modules.
577
5fdc711f 578=back
e02fdbd2 579
ba8251e8 580=head1 New Diagnostics
581
6b121555 582=item /%s/: Unrecognized escape \\%c passed through
583
584(W) You used a backslash-character combination which is not recognized
7711098a 585by Perl. This combination appears in an interpolated variable or a
6b121555 586C<'>-delimited regular expression.
587
af8c498a 588=item Filehandle %s opened only for output
6b121555 589
af8c498a 590(W) You tried to read from a filehandle opened only for writing. If you
591intended it to be a read-write filehandle, you needed to open it with
592"+E<lt>" or "+E<gt>" or "+E<gt>E<gt>" instead of with "E<lt>" or nothing. If
593you intended only to read from the file, use "E<lt>". See
594L<perlfunc/open>.
e02fdbd2 595
06eaf0bc 596=item Missing command in piped open
597
598(W) You used the C<open(FH, "| command")> or C<open(FH, "command |")>
599construction, but the command was missing or blank.
600
af8c498a 601=item Unrecognized escape \\%c passed through
602
603(W) You used a backslash-character combination which is not recognized
604by Perl.
605
f10b0346 606=item defined(@array) is deprecated
69794302 607
608(D) defined() is not usually useful on arrays because it checks for an
609undefined I<scalar> value. If you want to see if the array is empty,
610just use C<if (@array) { # not empty }> for example.
611
f10b0346 612=item defined(%hash) is deprecated
69794302 613
614(D) defined() is not usually useful on hashes because it checks for an
615undefined I<scalar> value. If you want to see if the hash is empty,
616just use C<if (%hash) { # not empty }> for example.
617
ba8251e8 618=head1 Obsolete Diagnostics
619
e02fdbd2 620Todo.
621
04d420f9 622=head1 Configuration Changes
623
27806c82 624=head2 installusrbinperl
625
04d420f9 626You can use "Configure -Uinstallusrbinperl" which causes installperl
627to skip installing perl also as /usr/bin/perl. This is useful if you
628prefer not to modify /usr/bin for some reason or another but harmful
629because many scripts assume to find Perl in /usr/bin/perl.
630
27806c82 631=head2 SOCKS support
555834d1 632
27806c82 633You can use "Configure -Dusesocks" which causes Perl to probe
634for the SOCKS proxy protocol library, http://www.socks.nec.com/
04d420f9 635
ba8251e8 636=head1 BUGS
637
638If you find what you think is a bug, you might check the headers of
14218588 639articles recently posted to the comp.lang.perl.misc newsgroup.
ba8251e8 640There may also be information at http://www.perl.com/perl/, the Perl
641Home Page.
642
643If you believe you have an unreported bug, please run the B<perlbug>
14218588 644program included with your release. Make sure to trim your bug down
ba8251e8 645to a tiny but sufficient test case. Your bug report, along with the
14218588 646output of C<perl -V>, will be sent off to perlbug@perl.com to be
ba8251e8 647analysed by the Perl porting team.
648
649=head1 SEE ALSO
650
651The F<Changes> file for exhaustive details on what changed.
652
653The F<INSTALL> file for how to build Perl.
654
655The F<README> file for general stuff.
656
657The F<Artistic> and F<Copying> files for copyright information.
658
659=head1 HISTORY
660
661Written by Gurusamy Sarathy <F<gsar@umich.edu>>, with many contributions
662from The Perl Porters.
663
664Send omissions or corrections to <F<perlbug@perl.com>>.
665
666=cut