Re: bug in pod2man (5.00326): section=3 for .pm modules
[p5sagit/p5-mst-13.2.git] / pod / perldelta.pod
CommitLineData
5f05dabc 1=head1 NAME
2
774d564b 3perldelta - what's new for perl5.004
5f05dabc 4
5=head1 DESCRIPTION
6
7This document describes differences between the 5.003 release (as
8documented in I<Programming Perl>, second edition--the Camel Book) and
9this one.
10
11=head1 Supported Environments
12
13Perl5.004 builds out of the box on Unix, Plan9, LynxOS, VMS, OS/2,
14QNX, and AmigaOS.
15
16=head1 Core Changes
17
18Most importantly, many bugs were fixed. See the F<Changes>
19file in the distribution for details.
20
21=head2 Compilation Option: Binary Compatibility With 5.003
22
23There is a new Configure question that asks if you want to maintain
24binary compatibility with Perl 5.003. If you choose binary
25compatibility, you do not have to recompile your extensions, but you
44a8e56a 26might have symbol conflicts if you embed Perl in another application,
774d564b 27just as in the 5.003 release. By default, binary compatibility
28is preserved at the expense of symbol table pollution.
5f05dabc 29
2ae324a7 30=head2 Subroutine Parameters Are Not Autovivified
7cfe7857 31
2ae324a7 32In Perl versions 5.002 and 5.003, array and hash elements used as
33subroutine parameters were "autovivified"; that is, they were brought
34into existence if they did not already exist. For example, calling
35C<func($h{foo})> would create C<$h{foo}> if it did not already exist,
36causing C<exists $h{foo}> to become true and C<keys %h> to return
37C<('foo')>.
38
39Perl 5.004 returns to the pre-5.002 behavior of I<not> autovivifying
40array and hash elements used as subroutine parameters.
7cfe7857 41
aa689395 42=head2 Fixed Parsing of $$<digit>, &$<digit>, etc.
43
44A bug in previous versions of Perl 5.0 prevented proper parsing of
45numeric special variables as symbolic references. That bug has been
46fixed. As a result, the string "$$0" is no longer equivalent to
47C<$$."0">, but rather to C<${$0}>. To get the old behavior, change
48"$$" followed by a digit to "${$}".
49
9607fc9c 50=head2 Changes to Tainting Checks
5f05dabc 51
9607fc9c 52A bug in previous versions may have failed to detect some insecure
53conditions when taint checks are turned on. (Taint checks are used
54in setuid or setgid scripts, or when explicitly turned on with the
55C<-T> invocation option.) Although it's unlikely, this may cause a
56previously-working script to now fail -- which should be construed
57as a blessing, since that indicates a potentially-serious security
58hole was just plugged.
59
2ae324a7 60=head2 New Opcode Module and Revised Safe Module
61
62A new Opcode module supports the creation, manipulation and
63application of opcode masks. The revised Safe module has a new API
64and is implemented using the new Opcode module. Please read the new
65Opcode and Safe documentation.
66
9607fc9c 67=head2 Internal Change: FileHandle Class Based on IO::* Classes
68
69File handles are now stored internally as type IO::Handle. The
70FileHandle module is still supported for backwards compatibility, but
71it is now merely a front end to the IO::* modules -- specifically,
72IO::Handle, IO::Seekable, and IO::File. We suggest, but do not
73require, that you use the IO::* modules in new code.
74
75In harmony with this change, C<*GLOB{FILEHANDLE}> is now a
76backward-compatible synonym for C<*STDOUT{IO}>.
5f05dabc 77
28757baa 78=head2 Internal Change: PerlIO internal IO abstraction interface
5f05dabc 79
80It is now possible to build Perl with AT&T's sfio IO package
81instead of stdio. See L<perlapio> for more details, and
82the F<INSTALL> file for how to use it.
83
84=head2 New and Changed Built-in Variables
85
86=over
87
88=item $^E
89
f86702cc 90Extended error message on some platforms. (Also known as
91$EXTENDED_OS_ERROR if you C<use English>).
5f05dabc 92
93=item $^H
94
95The current set of syntax checks enabled by C<use strict>. See the
96documentation of C<strict> for more details. Not actually new, but
97newly documented.
98Because it is intended for internal use by Perl core components,
99there is no C<use English> long name for this variable.
100
101=item $^M
102
103By default, running out of memory it is not trappable. However, if
104compiled for this, Perl may use the contents of C<$^M> as an emergency
105pool after die()ing with this message. Suppose that your Perl were
106compiled with -DEMERGENCY_SBRK and used Perl's malloc. Then
107
108 $^M = 'a' x (1<<16);
109
774d564b 110would allocate a 64K buffer for use when in emergency.
5f05dabc 111See the F<INSTALL> file for information on how to enable this option.
112As a disincentive to casual use of this advanced feature,
113there is no C<use English> long name for this variable.
114
115=back
116
117=head2 New and Changed Built-in Functions
118
119=over
120
121=item delete on slices
122
123This now works. (e.g. C<delete @ENV{'PATH', 'MANPATH'}>)
124
125=item flock
126
127is now supported on more platforms, and prefers fcntl
128to lockf when emulating.
129
046ff0ed 130=item printf and sprintf
131
132now support "%i" as a synonym for "%d", and the "h" modifier.
133So "%hi" means "short integer in decimal", and "%ho" means
134"unsigned short integer as octal".
135
5f05dabc 136=item keys as an lvalue
137
138As an lvalue, C<keys> allows you to increase the number of hash buckets
aa689395 139allocated for the given hash. This can gain you a measure of efficiency if
140you know the hash is going to get big. (This is similar to pre-extending
141an array by assigning a larger number to $#array.) If you say
5f05dabc 142
143 keys %hash = 200;
144
145then C<%hash> will have at least 200 buckets allocated for it. These
146buckets will be retained even if you do C<%hash = ()>; use C<undef
147%hash> if you want to free the storage while C<%hash> is still in scope.
148You can't shrink the number of buckets allocated for the hash using
149C<keys> in this way (but you needn't worry about doing this by accident,
150as trying has no effect).
151
152=item my() in Control Structures
153
154You can now use my() (with or without the parentheses) in the control
155expressions of control structures such as:
156
aa689395 157 while (defined(my $line = <>)) {
5f05dabc 158 $line = lc $line;
159 } continue {
160 print $line;
161 }
162
774d564b 163 if ((my $answer = <STDIN>) =~ /^y(es)?$/i) {
5f05dabc 164 user_agrees();
774d564b 165 } elsif ($answer =~ /^n(o)?$/i) {
5f05dabc 166 user_disagrees();
167 } else {
168 chomp $answer;
774d564b 169 die "`$answer' is neither `yes' nor `no'";
5f05dabc 170 }
171
172Also, you can declare a foreach loop control variable as lexical by
173preceding it with the word "my". For example, in:
174
175 foreach my $i (1, 2, 3) {
176 some_function();
177 }
178
179$i is a lexical variable, and the scope of $i extends to the end of
180the loop, but not beyond it.
181
182Note that you still cannot use my() on global punctuation variables
183such as $_ and the like.
184
185=item unpack() and pack()
186
187A new format 'w' represents a BER compressed integer (as defined in
188ASN.1). Its format is a sequence of one or more bytes, each of which
189provides seven bits of the total value, with the most significant
190first. Bit eight of each byte is set, except for the last byte, in
191which bit eight is clear.
192
193=item use VERSION
194
195If the first argument to C<use> is a number, it is treated as a version
196number instead of a module name. If the version of the Perl interpreter
197is less than VERSION, then an error message is printed and Perl exits
774d564b 198immediately. Because C<use> occurs at compile time, this check happens
199immediately during the compilation process, unlike C<require VERSION>,
200which waits until run-time for the check. This is often useful if you
201need to check the current Perl version before C<use>ing library modules
202which have changed in incompatible ways from older versions of Perl.
203(We try not to do this more than we have to.)
5f05dabc 204
205=item use Module VERSION LIST
206
207If the VERSION argument is present between Module and LIST, then the
71be2cbc 208C<use> will call the VERSION method in class Module with the given
209version as an argument. The default VERSION method, inherited from
210the Universal class, croaks if the given version is larger than the
211value of the variable $Module::VERSION. (Note that there is not a
212comma after VERSION!)
5f05dabc 213
7cfe7857 214This version-checking mechanism is similar to the one currently used
215in the Exporter module, but it is faster and can be used with modules
216that don't use the Exporter. It is the recommended method for new
217code.
218
5f05dabc 219=item prototype(FUNCTION)
220
221Returns the prototype of a function as a string (or C<undef> if the
222function has no prototype). FUNCTION is a reference to or the name of the
223function whose prototype you want to retrieve.
224(Not actually new; just never documented before.)
225
9607fc9c 226=item srand
227
228The default seed for C<srand>, which used to be C<time>, has been changed.
229Now it's a heady mix of difficult-to-predict system-dependent values,
230which should be sufficient for most everyday purposes.
231
232Previous to version 5.004, calling C<rand> without first calling C<srand>
233would yield the same sequence of random numbers on most or all machines.
234Now, when perl sees that you're calling C<rand> and haven't yet called
235C<srand>, it calls C<srand> with the default seed. You should still call
236C<srand> manually if your code might ever be run on a pre-5.004 system,
2ae324a7 237of course, or if you want a seed other than the default.
9607fc9c 238
5f05dabc 239=item $_ as Default
240
241Functions documented in the Camel to default to $_ now in
242fact do, and all those that do are so documented in L<perlfunc>.
243
774d564b 244=item C<m//g> does not trigger a pos() reset on failure
44a8e56a 245
246The C<m//g> match iteration construct used to reset the iteration
247when it failed to match (so that the next C<m//g> match would start at
248the beginning of the string). You now have to explicitly do a
249C<pos $str = 0;> to reset the "last match" position, or modify the
250string in some way. This change makes it practical to chain C<m//g>
251matches together in conjunction with ordinary matches using the C<\G>
252zero-width assertion. See L<perlop> and L<perlre>.
253
774d564b 254=item nested C<sub{}> closures work now
255
2ae324a7 256Prior to the 5.004 release, nested anonymous functions didn't work
257right. They do now.
774d564b 258
259=item formats work right on changing lexicals
260
261Just like anonymous functions that contain lexical variables
262that change (like a lexical index variable for a C<foreach> loop),
263formats now work properly. For example, this silently failed
264before, and is fine now:
265
266 my $i;
267 foreach $i ( 1 .. 10 ) {
268 format =
269 my i is @#
270 $i
271 .
272 write;
2ae324a7 273 }
774d564b 274
5f05dabc 275=back
276
277=head2 New Built-in Methods
278
279The C<UNIVERSAL> package automatically contains the following methods that
280are inherited by all other classes:
281
0a753a76 282=over
5f05dabc 283
284=item isa(CLASS)
285
286C<isa> returns I<true> if its object is blessed into a sub-class of C<CLASS>
287
288C<isa> is also exportable and can be called as a sub with two arguments. This
289allows the ability to check what a reference points to. Example:
290
291 use UNIVERSAL qw(isa);
292
293 if(isa($ref, 'ARRAY')) {
294 ...
295 }
296
297=item can(METHOD)
298
299C<can> checks to see if its object has a method called C<METHOD>,
300if it does then a reference to the sub is returned; if it does not then
301I<undef> is returned.
302
303=item VERSION( [NEED] )
304
71be2cbc 305C<VERSION> returns the version number of the class (package). If the
306NEED argument is given then it will check that the current version (as
307defined by the $VERSION variable in the given package) not less than
308NEED; it will die if this is not the case. This method is normally
309called as a class method. This method is called automatically by the
310C<VERSION> form of C<use>.
5f05dabc 311
312 use A 1.2 qw(some imported subs);
71be2cbc 313 # implies:
314 A->VERSION(1.2);
5f05dabc 315
5f05dabc 316=back
317
318B<NOTE:> C<can> directly uses Perl's internal code for method lookup, and
774d564b 319C<isa> uses a very similar method and caching strategy. This may cause
5f05dabc 320strange effects if the Perl code dynamically changes @ISA in any package.
321
322You may add other methods to the UNIVERSAL class via Perl or XS code.
323You do not need to C<use UNIVERSAL> in order to make these methods
324available to your program. This is necessary only if you wish to
325have C<isa> available as a plain subroutine in the current package.
326
327=head2 TIEHANDLE Now Supported
328
774d564b 329See L<perltie> for other kinds of tie()s.
330
5f05dabc 331=over
332
333=item TIEHANDLE classname, LIST
334
335This is the constructor for the class. That means it is expected to
336return an object of some sort. The reference can be used to
337hold some internal information.
338
2ae324a7 339 sub TIEHANDLE {
340 print "<shout>\n";
341 my $i;
774d564b 342 return bless \$i, shift;
343 }
5f05dabc 344
345=item PRINT this, LIST
346
347This method will be triggered every time the tied handle is printed to.
348Beyond its self reference it also expects the list that was passed to
349the print function.
350
2ae324a7 351 sub PRINT {
352 $r = shift;
353 $$r++;
774d564b 354 return print join( $, => map {uc} @_), $\;
355 }
5f05dabc 356
2ae324a7 357=item READ this LIST
358
359This method will be called when the handle is read from via the C<read>
360or C<sysread> functions.
361
362 sub READ {
363 $r = shift;
364 my($buf,$len,$offset) = @_;
365 print "READ called, \$buf=$buf, \$len=$len, \$offset=$offset";
366 }
367
5f05dabc 368=item READLINE this
369
370This method will be called when the handle is read from. The method
371should return undef when there is no more data.
372
2ae324a7 373 sub READLINE {
374 $r = shift;
375 return "PRINT called $$r times\n"
774d564b 376 }
5f05dabc 377
2ae324a7 378=item GETC this
379
380This method will be called when the C<getc> function is called.
381
382 sub GETC { print "Don't GETC, Get Perl"; return "a"; }
383
5f05dabc 384=item DESTROY this
385
386As with the other types of ties, this method will be called when the
387tied handle is about to be destroyed. This is useful for debugging and
388possibly for cleaning up.
389
2ae324a7 390 sub DESTROY {
774d564b 391 print "</shout>\n";
392 }
5f05dabc 393
394=back
395
aa689395 396=head2 Malloc Enhancements
397
2ae324a7 398Four new compilation flags are recognized by malloc.c. (They have no
399effect if perl is compiled with system malloc().)
400
401=over
402
403=item -DDEBUGGING_MSTATS
404
405If perl is compiled with C<DEBUGGING_MSTATS> defined, you can print
406memory statistics at runtime by running Perl thusly:
aa689395 407
408 env PERL_DEBUG_MSTATS=2 perl your_script_here
409
410The value of 2 means to print statistics after compilation and on
411exit; with a value of 1, the statistics ares printed only on exit.
412(If you want the statistics at an arbitrary time, you'll need to
413install the optional module Devel::Peek.)
414
aa689395 415=item -DEMERGENCY_SBRK
416
417If this macro is defined, running out of memory need not be a fatal
418error: a memory pool can allocated by assigning to the special
419variable C<$^M>. See L<"$^M">.
774d564b 420
aa689395 421=item -DPACK_MALLOC
422
423Perl memory allocation is by bucket with sizes close to powers of two.
424Because of these malloc overhead may be big, especially for data of
425size exactly a power of two. If C<PACK_MALLOC> is defined, perl uses
426a slightly different algorithm for small allocations (up to 64 bytes
427long), which makes it possible to have overhead down to 1 byte for
428allocations which are powers of two (and appear quite often).
429
430Expected memory savings (with 8-byte alignment in C<alignbytes>) is
431about 20% for typical Perl usage. Expected slowdown due to additional
432malloc overhead is in fractions of a percent (hard to measure, because
433of the effect of saved memory on speed).
434
435=item -DTWO_POT_OPTIMIZE
436
437Similarly to C<PACK_MALLOC>, this macro improves allocations of data
438with size close to a power of two; but this works for big allocations
439(starting with 16K by default). Such allocations are typical for big
440hashes and special-purpose scripts, especially image processing.
441
442On recent systems, the fact that perl requires 2M from system for 1M
443allocation will not affect speed of execution, since the tail of such
444a chunk is not going to be touched (and thus will not require real
445memory). However, it may result in a premature out-of-memory error.
446So if you will be manipulating very large blocks with sizes close to
447powers of two, it would be wise to define this macro.
448
449Expected saving of memory is 0-100% (100% in applications which
450require most memory in such 2**n chunks); expected slowdown is
451negligible.
452
453=back
454
455=head2 Miscellaneous Efficiency Enhancements
774d564b 456
457Functions that have an empty prototype and that do nothing but return
458a fixed value are now inlined (e.g. C<sub PI () { 3.14159 }>).
459
aa689395 460Each unique hash key is only allocated once, no matter how many hashes
461have an entry with that key. So even if you have 100 copies of the
462same hash, the hash keys never have to be re-allocated.
463
5f05dabc 464=head1 Pragmata
465
ff0cee69 466Four new pragmatic modules exist:
5f05dabc 467
468=over
469
470=item use blib
471
774d564b 472=item use blib 'dir'
473
5f05dabc 474Looks for MakeMaker-like I<'blib'> directory structure starting in
475I<dir> (or current directory) and working back up to five levels of
476parent directories.
477
478Intended for use on command line with B<-M> option as a way of testing
479arbitrary scripts against an uninstalled version of a package.
480
481=item use locale
482
483Tells the compiler to enable (or disable) the use of POSIX locales for
484built-in operations.
485
486When C<use locale> is in effect, the current LC_CTYPE locale is used
487for regular expressions and case mapping; LC_COLLATE for string
488ordering; and LC_NUMERIC for numeric formating in printf and sprintf
489(but B<not> in print). LC_NUMERIC is always used in write, since
490lexical scoping of formats is problematic at best.
491
492Each C<use locale> or C<no locale> affects statements to the end of
493the enclosing BLOCK or, if not inside a BLOCK, to the end of the
494current file. Locales can be switched and queried with
495POSIX::setlocale().
496
497See L<perllocale> for more information.
498
499=item use ops
500
7cfe7857 501Disable unsafe opcodes, or any named opcodes, when compiling Perl code.
5f05dabc 502
ff0cee69 503=item use vmsish
504
505Enable VMS-specific language features. Currently, there are three
aa689395 506VMS-specific features available: 'status', which makes C<$?> and
ff0cee69 507C<system> return genuine VMS status values instead of emulating POSIX;
508'exit', which makes C<exit> take a genuine VMS status value instead of
509assuming that C<exit 1> is an error; and 'time', which makes all times
510relative to the local time zone, in the VMS tradition.
511
5f05dabc 512=back
513
514=head1 Modules
515
f86702cc 516=head2 Installation Directories
517
518The I<installperl> script now places the Perl source files for
519extensions in the architecture-specific library directory, which is
520where the shared libraries for extensions have always been. This
521change is intended to allow administrators to keep the Perl 5.004
522library directory unchanged from a previous version, without running
523the risk of binary incompatibility between extensions' Perl source and
524shared libraries.
525
774d564b 526=head2 Fcntl
527
528New constants in the existing Fcntl modules are now supported,
529provided that your operating system happens to support them:
530
531 F_GETOWN F_SETOWN
2ae324a7 532 O_ASYNC O_DEFER O_DSYNC O_FSYNC O_SYNC
774d564b 533 O_EXLOCK O_SHLOCK
534
0a753a76 535These constants are intended for use with the Perl operators sysopen()
536and fcntl() and the basic database modules like SDBM_File. For the
537exact meaning of these and other Fcntl constants please refer to your
538operating system's documentation for fcntl() and open().
539
540In addition, the Fcntl module now provides these constants for use
541with the Perl operator flock():
542
543 LOCK_SH LOCK_EX LOCK_NB LOCK_UN
544
545These constants are defined in all environments (because where there is
546no flock() system call, Perl emulates it). However, for historical
547reasons, these constants are not exported unless they are explicitly
548requested with the ":flock" tag (e.g. C<use Fcntl ':flock'>).
549
5f05dabc 550=head2 Module Information Summary
551
774d564b 552Brand new modules, arranged by topic rather than strictly
553alphabetically:
554
555 CPAN interface to Comprehensive Perl Archive Network
556 CPAN::FirstTime create a CPAN configuration file
557 CPAN::Nox run CPAN while avoiding compiled extensions
5f05dabc 558
559 IO.pm Top-level interface to IO::* classes
560 IO/File.pm IO::File extension Perl module
561 IO/Handle.pm IO::Handle extension Perl module
562 IO/Pipe.pm IO::Pipe extension Perl module
563 IO/Seekable.pm IO::Seekable extension Perl module
564 IO/Select.pm IO::Select extension Perl module
565 IO/Socket.pm IO::Socket extension Perl module
566
567 Opcode.pm Disable named opcodes when compiling Perl code
568
569 ExtUtils/Embed.pm Utilities for embedding Perl in C programs
570 ExtUtils/testlib.pm Fixes up @INC to use just-built extension
571
5f05dabc 572 FindBin.pm Find path of currently executing program
573
574 Class/Template.pm Structure/member template builder
575 File/stat.pm Object-oriented wrapper around CORE::stat
576 Net/hostent.pm Object-oriented wrapper around CORE::gethost*
577 Net/netent.pm Object-oriented wrapper around CORE::getnet*
578 Net/protoent.pm Object-oriented wrapper around CORE::getproto*
579 Net/servent.pm Object-oriented wrapper around CORE::getserv*
580 Time/gmtime.pm Object-oriented wrapper around CORE::gmtime
581 Time/localtime.pm Object-oriented wrapper around CORE::localtime
582 Time/tm.pm Perl implementation of "struct tm" for {gm,local}time
583 User/grent.pm Object-oriented wrapper around CORE::getgr*
584 User/pwent.pm Object-oriented wrapper around CORE::getpw*
585
774d564b 586 Tie/RefHash.pm Base class for tied hashes with references as keys
7a4c00b4 587
5f05dabc 588 UNIVERSAL.pm Base class for *ALL* classes
589
590=head2 IO
591
592The IO module provides a simple mechanism to load all of the IO modules at one
593go. Currently this includes:
594
595 IO::Handle
596 IO::Seekable
597 IO::File
598 IO::Pipe
599 IO::Socket
600
601For more information on any of these modules, please see its
602respective documentation.
603
604=head2 Math::Complex
605
606The Math::Complex module has been totally rewritten, and now supports
607more operations. These are overloaded:
608
609 + - * / ** <=> neg ~ abs sqrt exp log sin cos atan2 "" (stringify)
610
611And these functions are now exported:
612
613 pi i Re Im arg
614 log10 logn cbrt root
615 tan cotan asin acos atan acotan
616 sinh cosh tanh cotanh asinh acosh atanh acotanh
617 cplx cplxe
618
0a753a76 619=head2 DB_File
620
621There have been quite a few changes made to DB_File. Here are a few of
622the highlights:
623
624=over
625
626=item *
627
628Fixed a handful of bugs.
629
630=item *
631
632By public demand, added support for the standard hash function exists().
633
634=item *
635
636Made it compatible with Berkeley DB 1.86.
637
638=item *
639
640Made negative subscripts work with RECNO interface.
641
642=item *
643
644Changed the default flags from O_RDWR to O_CREAT|O_RDWR and the default
645mode from 0640 to 0666.
646
647=item *
648
649Made DB_File automatically import the open() constants (O_RDWR,
650O_CREAT etc.) from Fcntl, if available.
651
652=item *
653
654Updated documentation.
655
656=back
657
658Refer to the HISTORY section in DB_File.pm for a complete list of
659changes. Everything after DB_File 1.01 has been added since 5.003.
660
661=head2 Net::Ping
662
663Major rewrite - support added for both udp echo and real icmp pings.
664
5f05dabc 665=head2 Overridden Built-ins
666
667Many of the Perl built-ins returning lists now have
668object-oriented overrides. These are:
669
670 File::stat
671 Net::hostent
672 Net::netent
673 Net::protoent
674 Net::servent
675 Time::gmtime
676 Time::localtime
677 User::grent
678 User::pwent
679
680For example, you can now say
681
682 use File::stat;
683 use User::pwent;
684 $his = (stat($filename)->st_uid == pwent($whoever)->pw_uid);
685
774d564b 686=head1 Utility Changes
5f05dabc 687
774d564b 688=head2 xsubpp
5f05dabc 689
0a753a76 690=over
691
774d564b 692=item C<void> XSUBs now default to returning nothing
693
694Due to a documentation/implementation bug in previous versions of
695Perl, XSUBs with a return type of C<void> have actually been
696returning one value. Usually that value was the GV for the XSUB,
697but sometimes it was some already freed or reused value, which would
698sometimes lead to program failure.
699
700In Perl 5.004, if an XSUB is declared as returning C<void>, it
701actually returns no value, i.e. an empty list (though there is a
702backward-compatibility exception; see below). If your XSUB really
703does return an SV, you should give it a return type of C<SV *>.
704
705For backward compatibility, I<xsubpp> tries to guess whether a
706C<void> XSUB is really C<void> or if it wants to return an C<SV *>.
707It does so by examining the text of the XSUB: if I<xsubpp> finds
708what looks like an assignment to C<ST(0)>, it assumes that the
709XSUB's return type is really C<SV *>.
5f05dabc 710
0a753a76 711=back
712
713=head1 C Language API Changes
714
715=over
716
717=item C<gv_fetchmethod> and C<perl_call_sv>
718
719The C<gv_fetchmethod> function finds a method for an object, just like
720in Perl 5.003. The GV it returns may be a method cache entry.
721However, in Perl 5.004, method cache entries are not visible to users;
722therefore, they can no longer be passed directly to C<perl_call_sv>.
723Instead, you should use the C<GvCV> macro on the GV to extract its CV,
724and pass the CV to C<perl_call_sv>.
725
726The most likely symptom of passing the result of C<gv_fetchmethod> to
727C<perl_call_sv> is Perl's producing an "Undefined subroutine called"
728error on the I<second> call to a given method (since there is no cache
729on the first call).
730
1e422769 731=item Extended API for manipulating hashes
732
733Internal handling of hash keys has changed. The old hashtable API is
734still fully supported, and will likely remain so. The additions to the
735API allow passing keys as C<SV*>s, so that C<tied> hashes can be given
736real scalars as keys rather than plain strings (non-tied hashes still
737can only use strings as keys). New extensions must use the new hash
738access functions and macros if they wish to use C<SV*> keys. These
739additions also make it feasible to manipulate C<HE*>s (hash entries),
740which can be more efficient. See L<perlguts> for details.
741
0a753a76 742=back
743
5f05dabc 744=head1 Documentation Changes
745
746Many of the base and library pods were updated. These
747new pods are included in section 1:
748
0a753a76 749=over
5f05dabc 750
774d564b 751=item L<perldelta>
5f05dabc 752
71be2cbc 753This document.
5f05dabc 754
71be2cbc 755=item L<perllocale>
5f05dabc 756
71be2cbc 757Locale support (internationalization and localization).
5f05dabc 758
759=item L<perltoot>
760
761Tutorial on Perl OO programming.
762
71be2cbc 763=item L<perlapio>
764
765Perl internal IO abstraction interface.
766
5f05dabc 767=item L<perldebug>
768
769Although not new, this has been massively updated.
770
771=item L<perlsec>
772
773Although not new, this has been massively updated.
774
775=back
776
777=head1 New Diagnostics
778
779Several new conditions will trigger warnings that were
780silent before. Some only affect certain platforms.
2ae324a7 781The following new warnings and errors outline these.
774d564b 782These messages are classified as follows (listed in
783increasing order of desperation):
784
785 (W) A warning (optional).
786 (D) A deprecation (optional).
787 (S) A severe warning (mandatory).
788 (F) A fatal error (trappable).
789 (P) An internal error you should never see (trappable).
790 (X) A very fatal error (non-trappable).
791 (A) An alien error message (not generated by Perl).
5f05dabc 792
0a753a76 793=over
5f05dabc 794
795=item "my" variable %s masks earlier declaration in same scope
796
797(S) A lexical variable has been redeclared in the same scope, effectively
798eliminating all access to the previous instance. This is almost always
799a typographical error. Note that the earlier variable will still exist
800until the end of the scope or until all closure referents to it are
801destroyed.
802
774d564b 803=item %s argument is not a HASH element or slice
804
805(F) The argument to delete() must be either a hash element, such as
806
807 $foo{$bar}
808 $ref->[12]->{"susie"}
809
810or a hash slice, such as
811
812 @foo{$bar, $baz, $xyzzy}
813 @{$ref->[12]}{"susie", "queue"}
814
5f05dabc 815=item Allocation too large: %lx
816
817(X) You can't allocate more than 64K on an MSDOS machine.
818
819=item Allocation too large
820
821(F) You can't allocate more than 2^31+"small amount" bytes.
822
823=item Attempt to free non-existent shared string
824
825(P) Perl maintains a reference counted internal table of strings to
826optimize the storage and access of hash keys and other strings. This
827indicates someone tried to decrement the reference count of a string
828that can no longer be found in the table.
829
830=item Attempt to use reference as lvalue in substr
831
832(W) You supplied a reference as the first argument to substr() used
833as an lvalue, which is pretty strange. Perhaps you forgot to
834dereference it first. See L<perlfunc/substr>.
835
836=item Unsupported function fork
837
838(F) Your version of executable does not support forking.
839
840Note that under some systems, like OS/2, there may be different flavors of
841Perl executables, some of which may support fork, some not. Try changing
842the name you call Perl by to C<perl_>, C<perl__>, and so on.
843
844=item Ill-formed logical name |%s| in prime_env_iter
845
846(W) A warning peculiar to VMS. A logical name was encountered when preparing
847to iterate over %ENV which violates the syntactic rules governing logical
848names. Since it cannot be translated normally, it is skipped, and will not
849appear in %ENV. This may be a benign occurrence, as some software packages
850might directly modify logical name tables and introduce non-standard names,
851or it may indicate that a logical name table has been corrupted.
852
774d564b 853=item Can't use bareword ("%s") as %s ref while "strict refs" in use
854
855(F) Only hard references are allowed by "strict refs". Symbolic references
856are disallowed. See L<perlref>.
857
858=item Constant subroutine %s redefined
859
860(S) You redefined a subroutine which had previously been eligible for
861inlining. See L<perlsub/"Constant Functions"> for commentary and
862workarounds.
863
864=item Died
865
866(F) You passed die() an empty string (the equivalent of C<die "">) or
867you called it with no args and both C<$@> and C<$_> were empty.
868
5f05dabc 869=item Integer overflow in hex number
870
871(S) The literal hex number you have specified is too big for your
872architecture. On a 32-bit architecture the largest hex literal is
8730xFFFFFFFF.
874
875=item Integer overflow in octal number
876
877(S) The literal octal number you have specified is too big for your
878architecture. On a 32-bit architecture the largest octal literal is
879037777777777.
880
774d564b 881=item Name "%s::%s" used only once: possible typo
882
883(W) Typographical errors often show up as unique variable names.
884If you had a good reason for having a unique name, then just mention
885it again somehow to suppress the message (the C<use vars> pragma is
886provided for just this purpose).
887
5f05dabc 888=item Null picture in formline
889
890(F) The first argument to formline must be a valid format picture
891specification. It was found to be empty, which probably means you
892supplied it an uninitialized value. See L<perlform>.
893
894=item Offset outside string
895
896(F) You tried to do a read/write/send/recv operation with an offset
897pointing outside the buffer. This is difficult to imagine.
898The sole exception to this is that C<sysread()>ing past the buffer
899will extend the buffer and zero pad the new area.
900
774d564b 901=item Stub found while resolving method `%s' overloading `%s' in package `%s'
902
903(P) Overloading resolution over @ISA tree may be broken by importing stubs.
904Stubs should never be implicitely created, but explicit calls to C<can>
905may break this.
906
907=item Cannot resolve method `%s' overloading `%s' in package `s'
908
909(P) Internal error trying to resolve overloading specified by a method
910name (as opposed to a subroutine reference).
911
5f05dabc 912=item Out of memory!
913
914(X|F) The malloc() function returned 0, indicating there was insufficient
915remaining memory (or virtual memory) to satisfy the request.
916
917The request was judged to be small, so the possibility to trap it
918depends on the way Perl was compiled. By default it is not trappable.
919However, if compiled for this, Perl may use the contents of C<$^M> as
920an emergency pool after die()ing with this message. In this case the
921error is trappable I<once>.
922
923=item Out of memory during request for %s
924
925(F) The malloc() function returned 0, indicating there was insufficient
926remaining memory (or virtual memory) to satisfy the request. However,
927the request was judged large enough (compile-time default is 64K), so
928a possibility to shut down by trapping this error is granted.
929
930=item Possible attempt to put comments in qw() list
931
774d564b 932(W) qw() lists contain items separated by whitespace; as with literal
933strings, comment characters are not ignored, but are instead treated
934as literal data. (You may have used different delimiters than the
935exclamation marks parentheses shown here; braces are also frequently
936used.)
937
938You probably wrote something like this:
5f05dabc 939
2ae324a7 940 @list = qw(
774d564b 941 a # a comment
5f05dabc 942 b # another comment
774d564b 943 );
5f05dabc 944
945when you should have written this:
946
774d564b 947 @list = qw(
2ae324a7 948 a
5f05dabc 949 b
774d564b 950 );
951
952If you really want comments, build your list the
953old-fashioned way, with quotes and commas:
954
955 @list = (
956 'a', # a comment
957 'b', # another comment
958 );
5f05dabc 959
960=item Possible attempt to separate words with commas
961
774d564b 962(W) qw() lists contain items separated by whitespace; therefore commas
963aren't needed to separate the items. (You may have used different
964delimiters than the parentheses shown here; braces are also frequently
965used.)
5f05dabc 966
2ae324a7 967You probably wrote something like this:
5f05dabc 968
774d564b 969 qw! a, b, c !;
970
971which puts literal commas into some of the list items. Write it without
972commas if you don't want them to appear in your data:
973
974 qw! a b c !;
5f05dabc 975
774d564b 976=item Scalar value @%s{%s} better written as $%s{%s}
977
978(W) You've used a hash slice (indicated by @) to select a single element of
979a hash. Generally it's better to ask for a scalar value (indicated by $).
980The difference is that C<$foo{&bar}> always behaves like a scalar, both when
981assigning to it and when evaluating its argument, while C<@foo{&bar}> behaves
982like a list when you assign to it, and provides a list context to its
983subscript, which can do weird things if you're expecting only one subscript.
5f05dabc 984
985=item untie attempted while %d inner references still exist
986
987(W) A copy of the object returned from C<tie> (or C<tied>) was still
988valid when C<untie> was called.
989
774d564b 990=item Value of %s construct can be "0"; test with defined()
991
992(W) In a conditional expression, you used <HANDLE>, <*> (glob), or
993C<readdir> as a boolean value. Each of these constructs can return a
994value of "0"; that would make the conditional expression false, which
995is probably not what you intended. When using these constructs in
996conditional expressions, test their values with the C<defined> operator.
997
998=item Variable "%s" may be unavailable
999
1000(W) An inner (nested) I<anonymous> subroutine is inside a I<named>
1001subroutine, and outside that is another subroutine; and the anonymous
1002(innermost) subroutine is referencing a lexical variable defined in
1003the outermost subroutine. For example:
1004
1005 sub outermost { my $a; sub middle { sub { $a } } }
1006
1007If the anonymous subroutine is called or referenced (directly or
1008indirectly) from the outermost subroutine, it will share the variable
1009as you would expect. But if the anonymous subroutine is called or
1010referenced when the outermost subroutine is not active, it will see
1011the value of the shared variable as it was before and during the
1012*first* call to the outermost subroutine, which is probably not what
1013you want.
1014
1015In these circumstances, it is usually best to make the middle
1016subroutine anonymous, using the C<sub {}> syntax. Perl has specific
1017support for shared variables in nested anonymous subroutines; a named
1018subroutine in between interferes with this feature.
1019
1020=item Variable "%s" will not stay shared
1021
1022(W) An inner (nested) I<named> subroutine is referencing a lexical
1023variable defined in an outer subroutine.
1024
1025When the inner subroutine is called, it will probably see the value of
1026the outer subroutine's variable as it was before and during the
1027*first* call to the outer subroutine; in this case, after the first
1028call to the outer subroutine is complete, the inner and outer
1029subroutines will no longer share a common value for the variable. In
1030other words, the variable will no longer be shared.
1031
1032Furthermore, if the outer subroutine is anonymous and references a
1033lexical variable outside itself, then the outer and inner subroutines
1034will I<never> share the given variable.
1035
1036This problem can usually be solved by making the inner subroutine
1037anonymous, using the C<sub {}> syntax. When inner anonymous subs that
1038reference variables in outer subroutines are called or referenced,
1039they are automatically re-bound to the current values of such
1040variables.
1041
1042=item Warning: something's wrong
1043
1044(W) You passed warn() an empty string (the equivalent of C<warn "">) or
1045you called it with no args and C<$_> was empty.
1046
1047=item Got an error from DosAllocMem
5f05dabc 1048
774d564b 1049(P) An error peculiar to OS/2. Most probably you're using an obsolete
1050version of Perl, and this should not happen anyway.
5f05dabc 1051
1052=item Malformed PERLLIB_PREFIX
1053
1054(F) An error peculiar to OS/2. PERLLIB_PREFIX should be of the form
1055
1056 prefix1;prefix2
1057
1058or
1059
1060 prefix1 prefix2
1061
1062with non-empty prefix1 and prefix2. If C<prefix1> is indeed a prefix of
1063a builtin library search path, prefix2 is substituted. The error may appear
1064if components are not found, or are too long. See L<perlos2/"PERLLIB_PREFIX">.
1065
1066=item PERL_SH_DIR too long
1067
1068(F) An error peculiar to OS/2. PERL_SH_DIR is the directory to find the
1069C<sh>-shell in. See L<perlos2/"PERL_SH_DIR">.
1070
1071=item Process terminated by SIG%s
1072
1073(W) This is a standard message issued by OS/2 applications, while *nix
1074applications die in silence. It is considered a feature of the OS/2
1075port. One can easily disable this by appropriate sighandlers, see
1076L<perlipc/"Signals">. See L<perlos2/"Process terminated by SIGTERM/SIGINT">.
1077
1078=back
1079
1080=head1 BUGS
1081
774d564b 1082If you find what you think is a bug, you might check the headers of
1083recently posted articles in the comp.lang.perl.misc newsgroup.
1084There may also be information at http://www.perl.com/perl/, the Perl
1085Home Page.
5f05dabc 1086
1087If you believe you have an unreported bug, please run the B<perlbug>
9607fc9c 1088program included with your release. Make sure you trim your bug down
1089to a tiny but sufficient test case. Your bug report, along with the
1090output of C<perl -V>, will be sent off to <F<perlbug@perl.com>> to be
1091analysed by the Perl porting team.
5f05dabc 1092
1093=head1 SEE ALSO
1094
1095The F<Changes> file for exhaustive details on what changed.
1096
1097The F<INSTALL> file for how to build Perl. This file has been
1098significantly updated for 5.004, so even veteran users should
1099look through it.
1100
1101The F<README> file for general stuff.
1102
1103The F<Copying> file for copyright information.
1104
1105=head1 HISTORY
1106
1107Constructed by Tom Christiansen, grabbing material with permission
1108from innumerable contributors, with kibitzing by more than a few Perl
1109porters.
1110
2ae324a7 1111Last update: Sat Mar 8 19:51:26 EST 1997