Re: Embedding success with _93
[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
63a6ff3a 742=item Embedding improvements
743
744In older versions of Perl it was not possible to create more than one
745instance of a Perl interpreter inside the same process without leaking
746like mad and/or crashing. The major bugs which caused this behavior
747have been fixed, however, you still must take care when embedding Perl
748in a C program. See the updated perlembed manpage for tips on how to
749manage your interpreters.
750
0a753a76 751=back
752
5f05dabc 753=head1 Documentation Changes
754
755Many of the base and library pods were updated. These
756new pods are included in section 1:
757
0a753a76 758=over
5f05dabc 759
774d564b 760=item L<perldelta>
5f05dabc 761
71be2cbc 762This document.
5f05dabc 763
71be2cbc 764=item L<perllocale>
5f05dabc 765
71be2cbc 766Locale support (internationalization and localization).
5f05dabc 767
768=item L<perltoot>
769
770Tutorial on Perl OO programming.
771
71be2cbc 772=item L<perlapio>
773
774Perl internal IO abstraction interface.
775
5f05dabc 776=item L<perldebug>
777
778Although not new, this has been massively updated.
779
780=item L<perlsec>
781
782Although not new, this has been massively updated.
783
784=back
785
786=head1 New Diagnostics
787
788Several new conditions will trigger warnings that were
789silent before. Some only affect certain platforms.
2ae324a7 790The following new warnings and errors outline these.
774d564b 791These messages are classified as follows (listed in
792increasing order of desperation):
793
794 (W) A warning (optional).
795 (D) A deprecation (optional).
796 (S) A severe warning (mandatory).
797 (F) A fatal error (trappable).
798 (P) An internal error you should never see (trappable).
799 (X) A very fatal error (non-trappable).
800 (A) An alien error message (not generated by Perl).
5f05dabc 801
0a753a76 802=over
5f05dabc 803
804=item "my" variable %s masks earlier declaration in same scope
805
806(S) A lexical variable has been redeclared in the same scope, effectively
807eliminating all access to the previous instance. This is almost always
808a typographical error. Note that the earlier variable will still exist
809until the end of the scope or until all closure referents to it are
810destroyed.
811
774d564b 812=item %s argument is not a HASH element or slice
813
814(F) The argument to delete() must be either a hash element, such as
815
816 $foo{$bar}
817 $ref->[12]->{"susie"}
818
819or a hash slice, such as
820
821 @foo{$bar, $baz, $xyzzy}
822 @{$ref->[12]}{"susie", "queue"}
823
5f05dabc 824=item Allocation too large: %lx
825
826(X) You can't allocate more than 64K on an MSDOS machine.
827
828=item Allocation too large
829
830(F) You can't allocate more than 2^31+"small amount" bytes.
831
832=item Attempt to free non-existent shared string
833
834(P) Perl maintains a reference counted internal table of strings to
835optimize the storage and access of hash keys and other strings. This
836indicates someone tried to decrement the reference count of a string
837that can no longer be found in the table.
838
839=item Attempt to use reference as lvalue in substr
840
841(W) You supplied a reference as the first argument to substr() used
842as an lvalue, which is pretty strange. Perhaps you forgot to
843dereference it first. See L<perlfunc/substr>.
844
845=item Unsupported function fork
846
847(F) Your version of executable does not support forking.
848
849Note that under some systems, like OS/2, there may be different flavors of
850Perl executables, some of which may support fork, some not. Try changing
851the name you call Perl by to C<perl_>, C<perl__>, and so on.
852
853=item Ill-formed logical name |%s| in prime_env_iter
854
855(W) A warning peculiar to VMS. A logical name was encountered when preparing
856to iterate over %ENV which violates the syntactic rules governing logical
857names. Since it cannot be translated normally, it is skipped, and will not
858appear in %ENV. This may be a benign occurrence, as some software packages
859might directly modify logical name tables and introduce non-standard names,
860or it may indicate that a logical name table has been corrupted.
861
774d564b 862=item Can't use bareword ("%s") as %s ref while "strict refs" in use
863
864(F) Only hard references are allowed by "strict refs". Symbolic references
865are disallowed. See L<perlref>.
866
867=item Constant subroutine %s redefined
868
869(S) You redefined a subroutine which had previously been eligible for
870inlining. See L<perlsub/"Constant Functions"> for commentary and
871workarounds.
872
873=item Died
874
875(F) You passed die() an empty string (the equivalent of C<die "">) or
876you called it with no args and both C<$@> and C<$_> were empty.
877
5f05dabc 878=item Integer overflow in hex number
879
880(S) The literal hex number you have specified is too big for your
881architecture. On a 32-bit architecture the largest hex literal is
8820xFFFFFFFF.
883
884=item Integer overflow in octal number
885
886(S) The literal octal number you have specified is too big for your
887architecture. On a 32-bit architecture the largest octal literal is
888037777777777.
889
774d564b 890=item Name "%s::%s" used only once: possible typo
891
892(W) Typographical errors often show up as unique variable names.
893If you had a good reason for having a unique name, then just mention
894it again somehow to suppress the message (the C<use vars> pragma is
895provided for just this purpose).
896
5f05dabc 897=item Null picture in formline
898
899(F) The first argument to formline must be a valid format picture
900specification. It was found to be empty, which probably means you
901supplied it an uninitialized value. See L<perlform>.
902
903=item Offset outside string
904
905(F) You tried to do a read/write/send/recv operation with an offset
906pointing outside the buffer. This is difficult to imagine.
907The sole exception to this is that C<sysread()>ing past the buffer
908will extend the buffer and zero pad the new area.
909
774d564b 910=item Stub found while resolving method `%s' overloading `%s' in package `%s'
911
912(P) Overloading resolution over @ISA tree may be broken by importing stubs.
913Stubs should never be implicitely created, but explicit calls to C<can>
914may break this.
915
916=item Cannot resolve method `%s' overloading `%s' in package `s'
917
918(P) Internal error trying to resolve overloading specified by a method
919name (as opposed to a subroutine reference).
920
5f05dabc 921=item Out of memory!
922
923(X|F) The malloc() function returned 0, indicating there was insufficient
924remaining memory (or virtual memory) to satisfy the request.
925
926The request was judged to be small, so the possibility to trap it
927depends on the way Perl was compiled. By default it is not trappable.
928However, if compiled for this, Perl may use the contents of C<$^M> as
929an emergency pool after die()ing with this message. In this case the
930error is trappable I<once>.
931
932=item Out of memory during request for %s
933
934(F) The malloc() function returned 0, indicating there was insufficient
935remaining memory (or virtual memory) to satisfy the request. However,
936the request was judged large enough (compile-time default is 64K), so
937a possibility to shut down by trapping this error is granted.
938
939=item Possible attempt to put comments in qw() list
940
774d564b 941(W) qw() lists contain items separated by whitespace; as with literal
942strings, comment characters are not ignored, but are instead treated
943as literal data. (You may have used different delimiters than the
944exclamation marks parentheses shown here; braces are also frequently
945used.)
946
947You probably wrote something like this:
5f05dabc 948
2ae324a7 949 @list = qw(
774d564b 950 a # a comment
5f05dabc 951 b # another comment
774d564b 952 );
5f05dabc 953
954when you should have written this:
955
774d564b 956 @list = qw(
2ae324a7 957 a
5f05dabc 958 b
774d564b 959 );
960
961If you really want comments, build your list the
962old-fashioned way, with quotes and commas:
963
964 @list = (
965 'a', # a comment
966 'b', # another comment
967 );
5f05dabc 968
969=item Possible attempt to separate words with commas
970
774d564b 971(W) qw() lists contain items separated by whitespace; therefore commas
972aren't needed to separate the items. (You may have used different
973delimiters than the parentheses shown here; braces are also frequently
974used.)
5f05dabc 975
2ae324a7 976You probably wrote something like this:
5f05dabc 977
774d564b 978 qw! a, b, c !;
979
980which puts literal commas into some of the list items. Write it without
981commas if you don't want them to appear in your data:
982
983 qw! a b c !;
5f05dabc 984
774d564b 985=item Scalar value @%s{%s} better written as $%s{%s}
986
987(W) You've used a hash slice (indicated by @) to select a single element of
988a hash. Generally it's better to ask for a scalar value (indicated by $).
989The difference is that C<$foo{&bar}> always behaves like a scalar, both when
990assigning to it and when evaluating its argument, while C<@foo{&bar}> behaves
991like a list when you assign to it, and provides a list context to its
992subscript, which can do weird things if you're expecting only one subscript.
5f05dabc 993
994=item untie attempted while %d inner references still exist
995
996(W) A copy of the object returned from C<tie> (or C<tied>) was still
997valid when C<untie> was called.
998
774d564b 999=item Value of %s construct can be "0"; test with defined()
1000
1001(W) In a conditional expression, you used <HANDLE>, <*> (glob), or
1002C<readdir> as a boolean value. Each of these constructs can return a
1003value of "0"; that would make the conditional expression false, which
1004is probably not what you intended. When using these constructs in
1005conditional expressions, test their values with the C<defined> operator.
1006
1007=item Variable "%s" may be unavailable
1008
1009(W) An inner (nested) I<anonymous> subroutine is inside a I<named>
1010subroutine, and outside that is another subroutine; and the anonymous
1011(innermost) subroutine is referencing a lexical variable defined in
1012the outermost subroutine. For example:
1013
1014 sub outermost { my $a; sub middle { sub { $a } } }
1015
1016If the anonymous subroutine is called or referenced (directly or
1017indirectly) from the outermost subroutine, it will share the variable
1018as you would expect. But if the anonymous subroutine is called or
1019referenced when the outermost subroutine is not active, it will see
1020the value of the shared variable as it was before and during the
1021*first* call to the outermost subroutine, which is probably not what
1022you want.
1023
1024In these circumstances, it is usually best to make the middle
1025subroutine anonymous, using the C<sub {}> syntax. Perl has specific
1026support for shared variables in nested anonymous subroutines; a named
1027subroutine in between interferes with this feature.
1028
1029=item Variable "%s" will not stay shared
1030
1031(W) An inner (nested) I<named> subroutine is referencing a lexical
1032variable defined in an outer subroutine.
1033
1034When the inner subroutine is called, it will probably see the value of
1035the outer subroutine's variable as it was before and during the
1036*first* call to the outer subroutine; in this case, after the first
1037call to the outer subroutine is complete, the inner and outer
1038subroutines will no longer share a common value for the variable. In
1039other words, the variable will no longer be shared.
1040
1041Furthermore, if the outer subroutine is anonymous and references a
1042lexical variable outside itself, then the outer and inner subroutines
1043will I<never> share the given variable.
1044
1045This problem can usually be solved by making the inner subroutine
1046anonymous, using the C<sub {}> syntax. When inner anonymous subs that
1047reference variables in outer subroutines are called or referenced,
1048they are automatically re-bound to the current values of such
1049variables.
1050
1051=item Warning: something's wrong
1052
1053(W) You passed warn() an empty string (the equivalent of C<warn "">) or
1054you called it with no args and C<$_> was empty.
1055
1056=item Got an error from DosAllocMem
5f05dabc 1057
774d564b 1058(P) An error peculiar to OS/2. Most probably you're using an obsolete
1059version of Perl, and this should not happen anyway.
5f05dabc 1060
1061=item Malformed PERLLIB_PREFIX
1062
1063(F) An error peculiar to OS/2. PERLLIB_PREFIX should be of the form
1064
1065 prefix1;prefix2
1066
1067or
1068
1069 prefix1 prefix2
1070
1071with non-empty prefix1 and prefix2. If C<prefix1> is indeed a prefix of
1072a builtin library search path, prefix2 is substituted. The error may appear
1073if components are not found, or are too long. See L<perlos2/"PERLLIB_PREFIX">.
1074
1075=item PERL_SH_DIR too long
1076
1077(F) An error peculiar to OS/2. PERL_SH_DIR is the directory to find the
1078C<sh>-shell in. See L<perlos2/"PERL_SH_DIR">.
1079
1080=item Process terminated by SIG%s
1081
1082(W) This is a standard message issued by OS/2 applications, while *nix
1083applications die in silence. It is considered a feature of the OS/2
1084port. One can easily disable this by appropriate sighandlers, see
1085L<perlipc/"Signals">. See L<perlos2/"Process terminated by SIGTERM/SIGINT">.
1086
1087=back
1088
1089=head1 BUGS
1090
774d564b 1091If you find what you think is a bug, you might check the headers of
1092recently posted articles in the comp.lang.perl.misc newsgroup.
1093There may also be information at http://www.perl.com/perl/, the Perl
1094Home Page.
5f05dabc 1095
1096If you believe you have an unreported bug, please run the B<perlbug>
9607fc9c 1097program included with your release. Make sure you trim your bug down
1098to a tiny but sufficient test case. Your bug report, along with the
1099output of C<perl -V>, will be sent off to <F<perlbug@perl.com>> to be
1100analysed by the Perl porting team.
5f05dabc 1101
1102=head1 SEE ALSO
1103
1104The F<Changes> file for exhaustive details on what changed.
1105
1106The F<INSTALL> file for how to build Perl. This file has been
1107significantly updated for 5.004, so even veteran users should
1108look through it.
1109
1110The F<README> file for general stuff.
1111
1112The F<Copying> file for copyright information.
1113
1114=head1 HISTORY
1115
1116Constructed by Tom Christiansen, grabbing material with permission
1117from innumerable contributors, with kibitzing by more than a few Perl
1118porters.
1119
2ae324a7 1120Last update: Sat Mar 8 19:51:26 EST 1997