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