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