Add test for grep() and wantarray
[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
82=back
83
84=head2 New and Changed Built-in Functions
85
86=over
87
88=item delete on slices
89
90This now works. (e.g. C<delete @ENV{'PATH', 'MANPATH'}>)
91
92=item flock
93
94is now supported on more platforms, and prefers fcntl
95to lockf when emulating.
96
046ff0ed 97=item printf and sprintf
98
99now support "%i" as a synonym for "%d", and the "h" modifier.
100So "%hi" means "short integer in decimal", and "%ho" means
101"unsigned short integer as octal".
102
5f05dabc 103=item keys as an lvalue
104
105As an lvalue, C<keys> allows you to increase the number of hash buckets
106allocated for the given associative array. This can gain you a measure
107of efficiency if you know the hash is going to get big. (This is
108similar to pre-extending an array by assigning a larger number to
109$#array.) If you say
110
111 keys %hash = 200;
112
113then C<%hash> will have at least 200 buckets allocated for it. These
114buckets 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.
116You can't shrink the number of buckets allocated for the hash using
117C<keys> in this way (but you needn't worry about doing this by accident,
118as trying has no effect).
119
120=item my() in Control Structures
121
122You can now use my() (with or without the parentheses) in the control
123expressions of control structures such as:
124
125 while (my $line = <>) {
126 $line = lc $line;
127 } continue {
128 print $line;
129 }
130
774d564b 131 if ((my $answer = <STDIN>) =~ /^y(es)?$/i) {
5f05dabc 132 user_agrees();
774d564b 133 } elsif ($answer =~ /^n(o)?$/i) {
5f05dabc 134 user_disagrees();
135 } else {
136 chomp $answer;
774d564b 137 die "`$answer' is neither `yes' nor `no'";
5f05dabc 138 }
139
140Also, you can declare a foreach loop control variable as lexical by
141preceding 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
148the loop, but not beyond it.
149
150Note that you still cannot use my() on global punctuation variables
151such as $_ and the like.
152
153=item unpack() and pack()
154
155A new format 'w' represents a BER compressed integer (as defined in
156ASN.1). Its format is a sequence of one or more bytes, each of which
157provides seven bits of the total value, with the most significant
158first. Bit eight of each byte is set, except for the last byte, in
159which bit eight is clear.
160
161=item use VERSION
162
163If the first argument to C<use> is a number, it is treated as a version
164number instead of a module name. If the version of the Perl interpreter
165is less than VERSION, then an error message is printed and Perl exits
774d564b 166immediately. Because C<use> occurs at compile time, this check happens
167immediately during the compilation process, unlike C<require VERSION>,
168which waits until run-time for the check. This is often useful if you
169need to check the current Perl version before C<use>ing library modules
170which have changed in incompatible ways from older versions of Perl.
171(We try not to do this more than we have to.)
5f05dabc 172
173=item use Module VERSION LIST
174
175If the VERSION argument is present between Module and LIST, then the
71be2cbc 176C<use> will call the VERSION method in class Module with the given
177version as an argument. The default VERSION method, inherited from
178the Universal class, croaks if the given version is larger than the
179value of the variable $Module::VERSION. (Note that there is not a
180comma after VERSION!)
5f05dabc 181
7cfe7857 182This version-checking mechanism is similar to the one currently used
183in the Exporter module, but it is faster and can be used with modules
184that don't use the Exporter. It is the recommended method for new
185code.
186
5f05dabc 187=item prototype(FUNCTION)
188
189Returns the prototype of a function as a string (or C<undef> if the
190function has no prototype). FUNCTION is a reference to or the name of the
191function whose prototype you want to retrieve.
192(Not actually new; just never documented before.)
193
194=item $_ as Default
195
196Functions documented in the Camel to default to $_ now in
197fact do, and all those that do are so documented in L<perlfunc>.
198
774d564b 199=item C<m//g> does not trigger a pos() reset on failure
44a8e56a 200
201The C<m//g> match iteration construct used to reset the iteration
202when it failed to match (so that the next C<m//g> match would start at
203the beginning of the string). You now have to explicitly do a
204C<pos $str = 0;> to reset the "last match" position, or modify the
205string in some way. This change makes it practical to chain C<m//g>
206matches together in conjunction with ordinary matches using the C<\G>
207zero-width assertion. See L<perlop> and L<perlre>.
208
774d564b 209=item nested C<sub{}> closures work now
210
211Prior to the 5.004 release, nested anonymous functions
212didn't work right. They do now.
213
214=item formats work right on changing lexicals
215
216Just like anonymous functions that contain lexical variables
217that change (like a lexical index variable for a C<foreach> loop),
218formats now work properly. For example, this silently failed
219before, 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
5f05dabc 230=back
231
232=head2 New Built-in Methods
233
234The C<UNIVERSAL> package automatically contains the following methods that
235are inherited by all other classes:
236
0a753a76 237=over
5f05dabc 238
239=item isa(CLASS)
240
241C<isa> returns I<true> if its object is blessed into a sub-class of C<CLASS>
242
243C<isa> is also exportable and can be called as a sub with two arguments. This
244allows 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
254C<can> checks to see if its object has a method called C<METHOD>,
255if it does then a reference to the sub is returned; if it does not then
256I<undef> is returned.
257
258=item VERSION( [NEED] )
259
71be2cbc 260C<VERSION> returns the version number of the class (package). If the
261NEED argument is given then it will check that the current version (as
262defined by the $VERSION variable in the given package) not less than
263NEED; it will die if this is not the case. This method is normally
264called as a class method. This method is called automatically by the
265C<VERSION> form of C<use>.
5f05dabc 266
267 use A 1.2 qw(some imported subs);
71be2cbc 268 # implies:
269 A->VERSION(1.2);
5f05dabc 270
5f05dabc 271=back
272
273B<NOTE:> C<can> directly uses Perl's internal code for method lookup, and
774d564b 274C<isa> uses a very similar method and caching strategy. This may cause
5f05dabc 275strange effects if the Perl code dynamically changes @ISA in any package.
276
277You may add other methods to the UNIVERSAL class via Perl or XS code.
278You do not need to C<use UNIVERSAL> in order to make these methods
279available to your program. This is necessary only if you wish to
280have C<isa> available as a plain subroutine in the current package.
281
282=head2 TIEHANDLE Now Supported
283
774d564b 284See L<perltie> for other kinds of tie()s.
285
5f05dabc 286=over
287
288=item TIEHANDLE classname, LIST
289
290This is the constructor for the class. That means it is expected to
291return an object of some sort. The reference can be used to
292hold some internal information.
293
774d564b 294 sub TIEHANDLE {
295 print "<shout>\n";
296 my $i;
297 return bless \$i, shift;
298 }
5f05dabc 299
300=item PRINT this, LIST
301
302This method will be triggered every time the tied handle is printed to.
303Beyond its self reference it also expects the list that was passed to
304the print function.
305
774d564b 306 sub PRINT {
307 $r = shift;
308 $$r++;
309 return print join( $, => map {uc} @_), $\;
310 }
5f05dabc 311
312=item READLINE this
313
314This method will be called when the handle is read from. The method
315should return undef when there is no more data.
316
774d564b 317 sub READLINE {
318 $r = shift;
319 return "PRINT called $$r times\n";
320 }
5f05dabc 321
322=item DESTROY this
323
324As with the other types of ties, this method will be called when the
325tied handle is about to be destroyed. This is useful for debugging and
326possibly for cleaning up.
327
774d564b 328 sub DESTROY {
329 print "</shout>\n";
330 }
5f05dabc 331
332=back
333
774d564b 334=item Efficiency Enhancements
335
336All hash keys with the same string are only allocated once, so
337even if you have 100 copies of the same hash, the immutable keys
338never have to be re-allocated.
339
340Functions that have an empty prototype and that do nothing but return
341a fixed value are now inlined (e.g. C<sub PI () { 3.14159 }>).
342
5f05dabc 343=head1 Pragmata
344
ff0cee69 345Four new pragmatic modules exist:
5f05dabc 346
347=over
348
349=item use blib
350
774d564b 351=item use blib 'dir'
352
5f05dabc 353Looks for MakeMaker-like I<'blib'> directory structure starting in
354I<dir> (or current directory) and working back up to five levels of
355parent directories.
356
357Intended for use on command line with B<-M> option as a way of testing
358arbitrary scripts against an uninstalled version of a package.
359
360=item use locale
361
362Tells the compiler to enable (or disable) the use of POSIX locales for
363built-in operations.
364
365When C<use locale> is in effect, the current LC_CTYPE locale is used
366for regular expressions and case mapping; LC_COLLATE for string
367ordering; and LC_NUMERIC for numeric formating in printf and sprintf
368(but B<not> in print). LC_NUMERIC is always used in write, since
369lexical scoping of formats is problematic at best.
370
371Each C<use locale> or C<no locale> affects statements to the end of
372the enclosing BLOCK or, if not inside a BLOCK, to the end of the
373current file. Locales can be switched and queried with
374POSIX::setlocale().
375
376See L<perllocale> for more information.
377
378=item use ops
379
7cfe7857 380Disable unsafe opcodes, or any named opcodes, when compiling Perl code.
5f05dabc 381
ff0cee69 382=item use vmsish
383
384Enable VMS-specific language features. Currently, there are three
385VMS-specific feature available: 'status', which makes C<$?> and
386C<system> return genuine VMS status values instead of emulating POSIX;
387'exit', which makes C<exit> take a genuine VMS status value instead of
388assuming that C<exit 1> is an error; and 'time', which makes all times
389relative to the local time zone, in the VMS tradition.
390
5f05dabc 391=back
392
393=head1 Modules
394
f86702cc 395=head2 Installation Directories
396
397The I<installperl> script now places the Perl source files for
398extensions in the architecture-specific library directory, which is
399where the shared libraries for extensions have always been. This
400change is intended to allow administrators to keep the Perl 5.004
401library directory unchanged from a previous version, without running
402the risk of binary incompatibility between extensions' Perl source and
403shared libraries.
404
774d564b 405=head2 Fcntl
406
407New constants in the existing Fcntl modules are now supported,
408provided 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
0a753a76 414These constants are intended for use with the Perl operators sysopen()
415and fcntl() and the basic database modules like SDBM_File. For the
416exact meaning of these and other Fcntl constants please refer to your
417operating system's documentation for fcntl() and open().
418
419In addition, the Fcntl module now provides these constants for use
420with the Perl operator flock():
421
422 LOCK_SH LOCK_EX LOCK_NB LOCK_UN
423
424These constants are defined in all environments (because where there is
425no flock() system call, Perl emulates it). However, for historical
426reasons, these constants are not exported unless they are explicitly
427requested with the ":flock" tag (e.g. C<use Fcntl ':flock'>).
428
5f05dabc 429=head2 Module Information Summary
430
774d564b 431Brand new modules, arranged by topic rather than strictly
432alphabetically:
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
5f05dabc 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
5f05dabc 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
774d564b 465 Tie/RefHash.pm Base class for tied hashes with references as keys
7a4c00b4 466
5f05dabc 467 UNIVERSAL.pm Base class for *ALL* classes
468
469=head2 IO
470
471The IO module provides a simple mechanism to load all of the IO modules at one
472go. Currently this includes:
473
474 IO::Handle
475 IO::Seekable
476 IO::File
477 IO::Pipe
478 IO::Socket
479
480For more information on any of these modules, please see its
481respective documentation.
482
483=head2 Math::Complex
484
485The Math::Complex module has been totally rewritten, and now supports
486more operations. These are overloaded:
487
488 + - * / ** <=> neg ~ abs sqrt exp log sin cos atan2 "" (stringify)
489
490And 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
0a753a76 498=head2 DB_File
499
500There have been quite a few changes made to DB_File. Here are a few of
501the highlights:
502
503=over
504
505=item *
506
507Fixed a handful of bugs.
508
509=item *
510
511By public demand, added support for the standard hash function exists().
512
513=item *
514
515Made it compatible with Berkeley DB 1.86.
516
517=item *
518
519Made negative subscripts work with RECNO interface.
520
521=item *
522
523Changed the default flags from O_RDWR to O_CREAT|O_RDWR and the default
524mode from 0640 to 0666.
525
526=item *
527
528Made DB_File automatically import the open() constants (O_RDWR,
529O_CREAT etc.) from Fcntl, if available.
530
531=item *
532
533Updated documentation.
534
535=back
536
537Refer to the HISTORY section in DB_File.pm for a complete list of
538changes. Everything after DB_File 1.01 has been added since 5.003.
539
540=head2 Net::Ping
541
542Major rewrite - support added for both udp echo and real icmp pings.
543
5f05dabc 544=head2 Overridden Built-ins
545
546Many of the Perl built-ins returning lists now have
547object-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
559For 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
774d564b 565=head1 Utility Changes
5f05dabc 566
774d564b 567=head2 xsubpp
5f05dabc 568
0a753a76 569=over
570
774d564b 571=item C<void> XSUBs now default to returning nothing
572
573Due to a documentation/implementation bug in previous versions of
574Perl, XSUBs with a return type of C<void> have actually been
575returning one value. Usually that value was the GV for the XSUB,
576but sometimes it was some already freed or reused value, which would
577sometimes lead to program failure.
578
579In Perl 5.004, if an XSUB is declared as returning C<void>, it
580actually returns no value, i.e. an empty list (though there is a
581backward-compatibility exception; see below). If your XSUB really
582does return an SV, you should give it a return type of C<SV *>.
583
584For backward compatibility, I<xsubpp> tries to guess whether a
585C<void> XSUB is really C<void> or if it wants to return an C<SV *>.
586It does so by examining the text of the XSUB: if I<xsubpp> finds
587what looks like an assignment to C<ST(0)>, it assumes that the
588XSUB's return type is really C<SV *>.
5f05dabc 589
0a753a76 590=back
591
592=head1 C Language API Changes
593
594=over
595
596=item C<gv_fetchmethod> and C<perl_call_sv>
597
598The C<gv_fetchmethod> function finds a method for an object, just like
599in Perl 5.003. The GV it returns may be a method cache entry.
600However, in Perl 5.004, method cache entries are not visible to users;
601therefore, they can no longer be passed directly to C<perl_call_sv>.
602Instead, you should use the C<GvCV> macro on the GV to extract its CV,
603and pass the CV to C<perl_call_sv>.
604
605The most likely symptom of passing the result of C<gv_fetchmethod> to
606C<perl_call_sv> is Perl's producing an "Undefined subroutine called"
607error on the I<second> call to a given method (since there is no cache
608on the first call).
609
610=back
611
5f05dabc 612=head1 Documentation Changes
613
614Many of the base and library pods were updated. These
615new pods are included in section 1:
616
0a753a76 617=over
5f05dabc 618
774d564b 619=item L<perldelta>
5f05dabc 620
71be2cbc 621This document.
5f05dabc 622
71be2cbc 623=item L<perllocale>
5f05dabc 624
71be2cbc 625Locale support (internationalization and localization).
5f05dabc 626
627=item L<perltoot>
628
629Tutorial on Perl OO programming.
630
71be2cbc 631=item L<perlapio>
632
633Perl internal IO abstraction interface.
634
5f05dabc 635=item L<perldebug>
636
637Although not new, this has been massively updated.
638
639=item L<perlsec>
640
641Although not new, this has been massively updated.
642
643=back
644
645=head1 New Diagnostics
646
647Several new conditions will trigger warnings that were
648silent before. Some only affect certain platforms.
774d564b 649The following new warnings and errors outline these.
650These messages are classified as follows (listed in
651increasing 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).
5f05dabc 660
0a753a76 661=over
5f05dabc 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
666eliminating all access to the previous instance. This is almost always
667a typographical error. Note that the earlier variable will still exist
668until the end of the scope or until all closure referents to it are
669destroyed.
670
774d564b 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
678or a hash slice, such as
679
680 @foo{$bar, $baz, $xyzzy}
681 @{$ref->[12]}{"susie", "queue"}
682
5f05dabc 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
694optimize the storage and access of hash keys and other strings. This
695indicates someone tried to decrement the reference count of a string
696that 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
701as an lvalue, which is pretty strange. Perhaps you forgot to
702dereference it first. See L<perlfunc/substr>.
703
704=item Unsupported function fork
705
706(F) Your version of executable does not support forking.
707
708Note that under some systems, like OS/2, there may be different flavors of
709Perl executables, some of which may support fork, some not. Try changing
710the 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
715to iterate over %ENV which violates the syntactic rules governing logical
716names. Since it cannot be translated normally, it is skipped, and will not
717appear in %ENV. This may be a benign occurrence, as some software packages
718might directly modify logical name tables and introduce non-standard names,
719or it may indicate that a logical name table has been corrupted.
720
774d564b 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
724are disallowed. See L<perlref>.
725
726=item Constant subroutine %s redefined
727
728(S) You redefined a subroutine which had previously been eligible for
729inlining. See L<perlsub/"Constant Functions"> for commentary and
730workarounds.
731
732=item Died
733
734(F) You passed die() an empty string (the equivalent of C<die "">) or
735you called it with no args and both C<$@> and C<$_> were empty.
736
5f05dabc 737=item Integer overflow in hex number
738
739(S) The literal hex number you have specified is too big for your
740architecture. On a 32-bit architecture the largest hex literal is
7410xFFFFFFFF.
742
743=item Integer overflow in octal number
744
745(S) The literal octal number you have specified is too big for your
746architecture. On a 32-bit architecture the largest octal literal is
747037777777777.
748
774d564b 749=item Name "%s::%s" used only once: possible typo
750
751(W) Typographical errors often show up as unique variable names.
752If you had a good reason for having a unique name, then just mention
753it again somehow to suppress the message (the C<use vars> pragma is
754provided for just this purpose).
755
5f05dabc 756=item Null picture in formline
757
758(F) The first argument to formline must be a valid format picture
759specification. It was found to be empty, which probably means you
760supplied 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
765pointing outside the buffer. This is difficult to imagine.
766The sole exception to this is that C<sysread()>ing past the buffer
767will extend the buffer and zero pad the new area.
768
774d564b 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.
772Stubs should never be implicitely created, but explicit calls to C<can>
773may 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
778name (as opposed to a subroutine reference).
779
5f05dabc 780=item Out of memory!
781
782(X|F) The malloc() function returned 0, indicating there was insufficient
783remaining memory (or virtual memory) to satisfy the request.
784
785The request was judged to be small, so the possibility to trap it
786depends on the way Perl was compiled. By default it is not trappable.
787However, if compiled for this, Perl may use the contents of C<$^M> as
788an emergency pool after die()ing with this message. In this case the
789error 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
794remaining memory (or virtual memory) to satisfy the request. However,
795the request was judged large enough (compile-time default is 64K), so
796a possibility to shut down by trapping this error is granted.
797
798=item Possible attempt to put comments in qw() list
799
774d564b 800(W) qw() lists contain items separated by whitespace; as with literal
801strings, comment characters are not ignored, but are instead treated
802as literal data. (You may have used different delimiters than the
803exclamation marks parentheses shown here; braces are also frequently
804used.)
805
806You probably wrote something like this:
5f05dabc 807
774d564b 808 @list = qw(
809 a # a comment
5f05dabc 810 b # another comment
774d564b 811 );
5f05dabc 812
813when you should have written this:
814
774d564b 815 @list = qw(
816 a
5f05dabc 817 b
774d564b 818 );
819
820If you really want comments, build your list the
821old-fashioned way, with quotes and commas:
822
823 @list = (
824 'a', # a comment
825 'b', # another comment
826 );
5f05dabc 827
828=item Possible attempt to separate words with commas
829
774d564b 830(W) qw() lists contain items separated by whitespace; therefore commas
831aren't needed to separate the items. (You may have used different
832delimiters than the parentheses shown here; braces are also frequently
833used.)
5f05dabc 834
774d564b 835You probably wrote something like this:
5f05dabc 836
774d564b 837 qw! a, b, c !;
838
839which puts literal commas into some of the list items. Write it without
840commas if you don't want them to appear in your data:
841
842 qw! a b c !;
5f05dabc 843
774d564b 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
847a hash. Generally it's better to ask for a scalar value (indicated by $).
848The difference is that C<$foo{&bar}> always behaves like a scalar, both when
849assigning to it and when evaluating its argument, while C<@foo{&bar}> behaves
850like a list when you assign to it, and provides a list context to its
851subscript, which can do weird things if you're expecting only one subscript.
5f05dabc 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
856valid when C<untie> was called.
857
774d564b 858=item Value of %s construct can be "0"; test with defined()
859
860(W) In a conditional expression, you used <HANDLE>, <*> (glob), or
861C<readdir> as a boolean value. Each of these constructs can return a
862value of "0"; that would make the conditional expression false, which
863is probably not what you intended. When using these constructs in
864conditional 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>
869subroutine, and outside that is another subroutine; and the anonymous
870(innermost) subroutine is referencing a lexical variable defined in
871the outermost subroutine. For example:
872
873 sub outermost { my $a; sub middle { sub { $a } } }
874
875If the anonymous subroutine is called or referenced (directly or
876indirectly) from the outermost subroutine, it will share the variable
877as you would expect. But if the anonymous subroutine is called or
878referenced when the outermost subroutine is not active, it will see
879the value of the shared variable as it was before and during the
880*first* call to the outermost subroutine, which is probably not what
881you want.
882
883In these circumstances, it is usually best to make the middle
884subroutine anonymous, using the C<sub {}> syntax. Perl has specific
885support for shared variables in nested anonymous subroutines; a named
886subroutine 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
891variable defined in an outer subroutine.
892
893When the inner subroutine is called, it will probably see the value of
894the outer subroutine's variable as it was before and during the
895*first* call to the outer subroutine; in this case, after the first
896call to the outer subroutine is complete, the inner and outer
897subroutines will no longer share a common value for the variable. In
898other words, the variable will no longer be shared.
899
900Furthermore, if the outer subroutine is anonymous and references a
901lexical variable outside itself, then the outer and inner subroutines
902will I<never> share the given variable.
903
904This problem can usually be solved by making the inner subroutine
905anonymous, using the C<sub {}> syntax. When inner anonymous subs that
906reference variables in outer subroutines are called or referenced,
907they are automatically re-bound to the current values of such
908variables.
909
910=item Warning: something's wrong
911
912(W) You passed warn() an empty string (the equivalent of C<warn "">) or
913you called it with no args and C<$_> was empty.
914
915=item Got an error from DosAllocMem
5f05dabc 916
774d564b 917(P) An error peculiar to OS/2. Most probably you're using an obsolete
918version of Perl, and this should not happen anyway.
5f05dabc 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
926or
927
928 prefix1 prefix2
929
930with non-empty prefix1 and prefix2. If C<prefix1> is indeed a prefix of
931a builtin library search path, prefix2 is substituted. The error may appear
932if 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
937C<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
942applications die in silence. It is considered a feature of the OS/2
943port. One can easily disable this by appropriate sighandlers, see
944L<perlipc/"Signals">. See L<perlos2/"Process terminated by SIGTERM/SIGINT">.
945
946=back
947
948=head1 BUGS
949
774d564b 950If you find what you think is a bug, you might check the headers of
951recently posted articles in the comp.lang.perl.misc newsgroup.
952There may also be information at http://www.perl.com/perl/, the Perl
953Home Page.
5f05dabc 954
955If you believe you have an unreported bug, please run the B<perlbug>
956program included with your release. Make sure you trim your bug
957down to a tiny but sufficient test case. Your bug report, along
958with the output of C<perl -V>, will be sent off to perlbug@perl.com
959to be analysed by the Perl porting team.
960
961=head1 SEE ALSO
962
963The F<Changes> file for exhaustive details on what changed.
964
965The F<INSTALL> file for how to build Perl. This file has been
966significantly updated for 5.004, so even veteran users should
967look through it.
968
969The F<README> file for general stuff.
970
971The F<Copying> file for copyright information.
972
973=head1 HISTORY
974
975Constructed by Tom Christiansen, grabbing material with permission
976from innumerable contributors, with kibitzing by more than a few Perl
977porters.
978
44a8e56a 979Last update: Tue Jan 14 14:03:02 EST 1997