[inseparable changes from match from perl-5.003_97g to perl-5.003_97h]
[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
54310121 21=head2 Compilation option: Binary compatibility with 5.003
5f05dabc 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
54310121 30=head2 $PERL5OPT environment variable
31
32You may now put Perl options in the $PERL5OPT environment variable.
33Unless Perl is running with taint checks, it will interpret this
34variable as if its contents had appeared on a "#!perl" line at the
35beginning of your script, except that hyphens are optional. PERL5OPT
36may only be used to set the following switches: B<-[DIMUdmw]>.
37
8cc95fdb 38=head2 Limitations on B<-M>, and C<-m>, and B<-T> options
39
40The C<-M> and C<-m> options are no longer allowed on the C<#!> line of
41a script. If a script needs a module, it should invoke it with the
42C<use> pragma.
43
44The B<-T> option is also forbidden on the C<#!> line of a script,
45unless it was present on the Perl command line. Due to the way C<#!>
46works, this usually means that B<-T> must be in the first argument.
47Thus:
48
49 #!/usr/bin/perl -T -w
50
51will probably work for an executable script invoked as C<scriptname>,
52while:
53
54 #!/usr/bin/perl -w -T
55
56will probably fail under the same conditions. (Non-Unix systems will
57probably not follow this rule.) But C<perl scriptname> is guaranteed
58to fail, since then there is no chance of B<-T> being found on the
59command line before it is found on the C<#!> line.
60
54310121 61=head2 More precise warnings
62
dc848c6f 63If you removed the B<-w> option from your Perl 5.003 scripts because it
54310121 64made Perl too verbose, we recommend that you try putting it back when
65you upgrade to Perl 5.004. Each new perl version tends to remove some
66undesirable warnings, while adding new warnings that may catch bugs in
67your scripts.
68
dc848c6f 69=head2 Deprecated: Inherited C<AUTOLOAD> for non-methods
70
71Before Perl 5.004, C<AUTOLOAD> functions were looked up as methods
72(using the C<@ISA> hierarchy), even when the function to be autoloaded
73was called as a plain function (e.g. C<Foo::bar()>), not a method
74(e.g. C<Foo->bar()> or C<$obj->bar()>).
75
76Perl 5.005 will use method lookup only for methods' C<AUTOLOAD>s.
77However, there is a significant base of existing code that may be using
78the old behavior. So, as an interim step, Perl 5.004 issues an optional
79warning when a non-method uses an inherited C<AUTOLOAD>.
80
81The simple rule is: Inheritance will not work when autoloading
82non-methods. The simple fix for old code is: In any module that used to
83depend on inheriting C<AUTOLOAD> for non-methods from a base class named
84C<BaseClass>, execute C<*AUTOLOAD = \&BaseClass::AUTOLOAD> during startup.
85
3fe9a6f1 86=head2 Subroutine arguments created only when they're modified
7cfe7857 87
3fe9a6f1 88In Perl 5.004, nonexistent array and hash elements used as subroutine
89parameters are brought into existence only if they are actually
90assigned to (via C<@_>).
2ae324a7 91
3fe9a6f1 92Earlier versions of Perl vary in their handling of such arguments.
93Perl versions 5.002 and 5.003 always brought them into existence.
94Perl versions 5.000, 5.001, and 5.002 brought them into existence only
95if they were not the first argument (which was almost certainly a
96bug). Earlier versions of Perl never brought them into existence.
97
98For example, given this code:
99
100 undef @a; undef %a;
101 sub show { print $_[0] };
102 sub change { $_[0]++ };
103 show($a[2]);
104 change($a{b});
105
106After this code executes in Perl 5.004, $a{b} exists but $a[2] does
107not. In Perl 5.002 and 5.003, both $a{b} and $a[2] would have existed
108(but $a[2]'s value would have been undefined).
7cfe7857 109
8cc95fdb 110=head2 Group vector changeable with C<$)>
5cd24f17 111
112The C<$)> special variable has always (well, in Perl 5, at least)
8cc95fdb 113reflected not only the current effective group, but also the group list
114as returned by the C<getgroups()> C function (if there is one).
115However, until this release, there has not been a way to call the
116C<setgroups()> C function from Perl.
5cd24f17 117
8cc95fdb 118In Perl 5.004, assigning to C<$)> is exactly symmetrical with examining
119it: The first number in its string value is used as the effective gid;
120if there are any numbers after the first one, they are passed to the
121C<setgroups()> C function (if there is one).
5cd24f17 122
54310121 123=head2 Fixed parsing of $$<digit>, &$<digit>, etc.
aa689395 124
5cd24f17 125Perl versions before 5.004 misinterpreted any type marker followed by
126"$" and a digit. For example, "$$0" was incorrectly taken to mean
127"${$}0" instead of "${$0}". This bug is (mostly) fixed in Perl 5.004.
128
129However, the developers of Perl 5.004 could not fix this bug completely,
130because at least two widely-used modules depend on the old meaning of
131"$$0" in a string. So Perl 5.004 still interprets "$$<digit>" in the
132old (broken) way inside strings; but it generates this message as a
133warning. And in Perl 5.005, this special treatment will cease.
aa689395 134
54310121 135=head2 No resetting of $. on implicit close
68dc0745 136
137The documentation for Perl 5.0 has always stated that C<$.> is I<not>
54310121 138reset when an already-open file handle is reopened with no intervening
139call to C<close>. Due to a bug, perl versions 5.000 through 5.003
68dc0745 140I<did> reset C<$.> under that circumstance; Perl 5.004 does not.
141
54310121 142=head2 C<wantarray> may return undef
143
144The C<wantarray> operator returns true if a subroutine is expected to
145return a list, and false otherwise. In Perl 5.004, C<wantarray> can
146also return the undefined value if a subroutine's return value will
147not be used at all, which allows subroutines to avoid a time-consuming
148calculation of a return value if it isn't going to be used.
149
150=head2 Changes to tainting checks
5f05dabc 151
9607fc9c 152A bug in previous versions may have failed to detect some insecure
8cc95fdb 153conditions when taint checks are turned on. (Taint checks are used
9607fc9c 154in setuid or setgid scripts, or when explicitly turned on with the
8cc95fdb 155C<-T> invocation option.) Although it's unlikely, this may cause a
9607fc9c 156previously-working script to now fail -- which should be construed
157as a blessing, since that indicates a potentially-serious security
158hole was just plugged.
159
54310121 160=head2 New Opcode module and revised Safe module
2ae324a7 161
162A new Opcode module supports the creation, manipulation and
163application of opcode masks. The revised Safe module has a new API
164and is implemented using the new Opcode module. Please read the new
165Opcode and Safe documentation.
166
54310121 167=head2 Embedding improvements
68dc0745 168
169In older versions of Perl it was not possible to create more than one
170Perl interpreter instance inside a single process without leaking like a
171sieve and/or crashing. The bugs that caused this behavior have all been
172fixed. However, you still must take care when embedding Perl in a C
173program. See the updated perlembed manpage for tips on how to manage
174your interpreters.
175
54310121 176=head2 Internal change: FileHandle class based on IO::* classes
9607fc9c 177
178File handles are now stored internally as type IO::Handle. The
179FileHandle module is still supported for backwards compatibility, but
180it is now merely a front end to the IO::* modules -- specifically,
181IO::Handle, IO::Seekable, and IO::File. We suggest, but do not
182require, that you use the IO::* modules in new code.
183
184In harmony with this change, C<*GLOB{FILEHANDLE}> is now a
185backward-compatible synonym for C<*STDOUT{IO}>.
5f05dabc 186
54310121 187=head2 Internal change: PerlIO abstraction interface
5f05dabc 188
189It is now possible to build Perl with AT&T's sfio IO package
190instead of stdio. See L<perlapio> for more details, and
191the F<INSTALL> file for how to use it.
192
54310121 193=head2 New and changed builtin variables
5f05dabc 194
195=over
196
197=item $^E
198
f86702cc 199Extended error message on some platforms. (Also known as
200$EXTENDED_OS_ERROR if you C<use English>).
5f05dabc 201
202=item $^H
203
204The current set of syntax checks enabled by C<use strict>. See the
205documentation of C<strict> for more details. Not actually new, but
206newly documented.
207Because it is intended for internal use by Perl core components,
208there is no C<use English> long name for this variable.
209
210=item $^M
211
212By default, running out of memory it is not trappable. However, if
213compiled for this, Perl may use the contents of C<$^M> as an emergency
214pool after die()ing with this message. Suppose that your Perl were
215compiled with -DEMERGENCY_SBRK and used Perl's malloc. Then
216
217 $^M = 'a' x (1<<16);
218
774d564b 219would allocate a 64K buffer for use when in emergency.
5f05dabc 220See the F<INSTALL> file for information on how to enable this option.
221As a disincentive to casual use of this advanced feature,
222there is no C<use English> long name for this variable.
223
224=back
225
54310121 226=head2 New and changed builtin functions
5f05dabc 227
228=over
229
230=item delete on slices
231
232This now works. (e.g. C<delete @ENV{'PATH', 'MANPATH'}>)
233
234=item flock
235
68dc0745 236is now supported on more platforms, prefers fcntl to lockf when
237emulating, and always flushes before (un)locking.
5f05dabc 238
046ff0ed 239=item printf and sprintf
240
241now support "%i" as a synonym for "%d", and the "h" modifier.
242So "%hi" means "short integer in decimal", and "%ho" means
243"unsigned short integer as octal".
244
5f05dabc 245=item keys as an lvalue
246
247As an lvalue, C<keys> allows you to increase the number of hash buckets
aa689395 248allocated for the given hash. This can gain you a measure of efficiency if
249you know the hash is going to get big. (This is similar to pre-extending
250an array by assigning a larger number to $#array.) If you say
5f05dabc 251
252 keys %hash = 200;
253
254then C<%hash> will have at least 200 buckets allocated for it. These
255buckets will be retained even if you do C<%hash = ()>; use C<undef
256%hash> if you want to free the storage while C<%hash> is still in scope.
257You can't shrink the number of buckets allocated for the hash using
258C<keys> in this way (but you needn't worry about doing this by accident,
259as trying has no effect).
260
261=item my() in Control Structures
262
263You can now use my() (with or without the parentheses) in the control
264expressions of control structures such as:
265
aa689395 266 while (defined(my $line = <>)) {
5f05dabc 267 $line = lc $line;
268 } continue {
269 print $line;
270 }
271
774d564b 272 if ((my $answer = <STDIN>) =~ /^y(es)?$/i) {
5f05dabc 273 user_agrees();
774d564b 274 } elsif ($answer =~ /^n(o)?$/i) {
5f05dabc 275 user_disagrees();
276 } else {
277 chomp $answer;
774d564b 278 die "`$answer' is neither `yes' nor `no'";
5f05dabc 279 }
280
281Also, you can declare a foreach loop control variable as lexical by
282preceding it with the word "my". For example, in:
283
284 foreach my $i (1, 2, 3) {
285 some_function();
286 }
287
288$i is a lexical variable, and the scope of $i extends to the end of
289the loop, but not beyond it.
290
291Note that you still cannot use my() on global punctuation variables
292such as $_ and the like.
293
137443ea 294=item pack() and unpack()
5f05dabc 295
296A new format 'w' represents a BER compressed integer (as defined in
297ASN.1). Its format is a sequence of one or more bytes, each of which
298provides seven bits of the total value, with the most significant
299first. Bit eight of each byte is set, except for the last byte, in
300which bit eight is clear.
301
8903cb82 302Both pack() and unpack() now fail when their templates contain invalid
303types. (Invalid types used to be ignored.)
137443ea 304
8903cb82 305=item sysseek()
306
307The new sysseek() operator is a variant of seek() that sets and gets the
308file's system read/write position, using the lseek(2) system call. It is
309the only reliable way to seek before using sysread() or syswrite(). Its
310return value is the new position, or the undefined value on failure.
137443ea 311
5f05dabc 312=item use VERSION
313
314If the first argument to C<use> is a number, it is treated as a version
315number instead of a module name. If the version of the Perl interpreter
316is less than VERSION, then an error message is printed and Perl exits
774d564b 317immediately. Because C<use> occurs at compile time, this check happens
318immediately during the compilation process, unlike C<require VERSION>,
54310121 319which waits until runtime for the check. This is often useful if you
774d564b 320need to check the current Perl version before C<use>ing library modules
321which have changed in incompatible ways from older versions of Perl.
322(We try not to do this more than we have to.)
5f05dabc 323
324=item use Module VERSION LIST
325
326If the VERSION argument is present between Module and LIST, then the
71be2cbc 327C<use> will call the VERSION method in class Module with the given
328version as an argument. The default VERSION method, inherited from
dc848c6f 329the UNIVERSAL class, croaks if the given version is larger than the
71be2cbc 330value of the variable $Module::VERSION. (Note that there is not a
331comma after VERSION!)
5f05dabc 332
7cfe7857 333This version-checking mechanism is similar to the one currently used
334in the Exporter module, but it is faster and can be used with modules
335that don't use the Exporter. It is the recommended method for new
336code.
337
5f05dabc 338=item prototype(FUNCTION)
339
340Returns the prototype of a function as a string (or C<undef> if the
341function has no prototype). FUNCTION is a reference to or the name of the
342function whose prototype you want to retrieve.
343(Not actually new; just never documented before.)
344
9607fc9c 345=item srand
346
347The default seed for C<srand>, which used to be C<time>, has been changed.
348Now it's a heady mix of difficult-to-predict system-dependent values,
349which should be sufficient for most everyday purposes.
350
351Previous to version 5.004, calling C<rand> without first calling C<srand>
352would yield the same sequence of random numbers on most or all machines.
353Now, when perl sees that you're calling C<rand> and haven't yet called
354C<srand>, it calls C<srand> with the default seed. You should still call
355C<srand> manually if your code might ever be run on a pre-5.004 system,
2ae324a7 356of course, or if you want a seed other than the default.
9607fc9c 357
5f05dabc 358=item $_ as Default
359
360Functions documented in the Camel to default to $_ now in
361fact do, and all those that do are so documented in L<perlfunc>.
362
a99df21c 363=item C<m//g> does not reset search position on failure
364
365The C<m//g> match iteration construct used to reset its target string's
366search position (which is visible through the C<pos> operator) when a
367match failed; as a result, the next C<m//g> match would start at the
368beginning of the string). With Perl 5.004, the search position must be
369reset explicitly, as with C<pos $str = 0;>, or by modifying the target
370string. This change in Perl makes it possible to chain matches together
371in conjunction with the C<\G> zero-width assertion. See L<perlop> and
372L<perlre>.
373
374Here is an illustration of what it takes to get the old behavior:
375
376 for ( qw(this and that are not what you think you got) ) {
377 while ( /(\w*t\w*)/g ) { print "t word is: $1\n" }
378 pos = 0; # REQUIRED FOR 5.004
379 while ( /(\w*a\w*)/g ) { print "a word is: $1\n" }
380 print "\n";
381 }
44a8e56a 382
3fe9a6f1 383=item C<m//x> ignores whitespace before ?*+{}
384
385The C<m//x> construct has always been intended to ignore all unescaped
386whitespace. However, before Perl 5.004, whitespace had the effect of
54310121 387escaping repeat modifiers like "*" or "?"; for example, C</a *b/x> was
3fe9a6f1 388(mis)interpreted as C</a\*b/x>. This bug has been fixed in 5.004.
389
774d564b 390=item nested C<sub{}> closures work now
391
2ae324a7 392Prior to the 5.004 release, nested anonymous functions didn't work
393right. They do now.
774d564b 394
395=item formats work right on changing lexicals
396
397Just like anonymous functions that contain lexical variables
398that change (like a lexical index variable for a C<foreach> loop),
399formats now work properly. For example, this silently failed
400before, and is fine now:
401
402 my $i;
403 foreach $i ( 1 .. 10 ) {
404 format =
405 my i is @#
406 $i
407 .
408 write;
2ae324a7 409 }
774d564b 410
5f05dabc 411=back
412
54310121 413=head2 New builtin methods
5f05dabc 414
415The C<UNIVERSAL> package automatically contains the following methods that
416are inherited by all other classes:
417
0a753a76 418=over
5f05dabc 419
420=item isa(CLASS)
421
68dc0745 422C<isa> returns I<true> if its object is blessed into a subclass of C<CLASS>
5f05dabc 423
424C<isa> is also exportable and can be called as a sub with two arguments. This
425allows the ability to check what a reference points to. Example:
426
427 use UNIVERSAL qw(isa);
428
429 if(isa($ref, 'ARRAY')) {
430 ...
431 }
432
433=item can(METHOD)
434
435C<can> checks to see if its object has a method called C<METHOD>,
436if it does then a reference to the sub is returned; if it does not then
437I<undef> is returned.
438
439=item VERSION( [NEED] )
440
71be2cbc 441C<VERSION> returns the version number of the class (package). If the
442NEED argument is given then it will check that the current version (as
443defined by the $VERSION variable in the given package) not less than
444NEED; it will die if this is not the case. This method is normally
445called as a class method. This method is called automatically by the
446C<VERSION> form of C<use>.
5f05dabc 447
448 use A 1.2 qw(some imported subs);
71be2cbc 449 # implies:
450 A->VERSION(1.2);
5f05dabc 451
5f05dabc 452=back
453
454B<NOTE:> C<can> directly uses Perl's internal code for method lookup, and
774d564b 455C<isa> uses a very similar method and caching strategy. This may cause
5f05dabc 456strange effects if the Perl code dynamically changes @ISA in any package.
457
458You may add other methods to the UNIVERSAL class via Perl or XS code.
459You do not need to C<use UNIVERSAL> in order to make these methods
460available to your program. This is necessary only if you wish to
461have C<isa> available as a plain subroutine in the current package.
462
54310121 463=head2 TIEHANDLE now supported
5f05dabc 464
774d564b 465See L<perltie> for other kinds of tie()s.
466
5f05dabc 467=over
468
469=item TIEHANDLE classname, LIST
470
471This is the constructor for the class. That means it is expected to
472return an object of some sort. The reference can be used to
473hold some internal information.
474
2ae324a7 475 sub TIEHANDLE {
476 print "<shout>\n";
477 my $i;
774d564b 478 return bless \$i, shift;
479 }
5f05dabc 480
481=item PRINT this, LIST
482
483This method will be triggered every time the tied handle is printed to.
484Beyond its self reference it also expects the list that was passed to
485the print function.
486
2ae324a7 487 sub PRINT {
488 $r = shift;
489 $$r++;
774d564b 490 return print join( $, => map {uc} @_), $\;
491 }
5f05dabc 492
46fc3d4c 493=item PRINTF this, LIST
494
495This method will be triggered every time the tied handle is printed to
496with the C<printf()> function.
497Beyond its self reference it also expects the format and list that was
498passed to the printf function.
499
500 sub PRINTF {
501 shift;
502 my $fmt = shift;
503 print sprintf($fmt, @_)."\n";
504 }
505
2ae324a7 506=item READ this LIST
507
508This method will be called when the handle is read from via the C<read>
509or C<sysread> functions.
510
511 sub READ {
512 $r = shift;
513 my($buf,$len,$offset) = @_;
514 print "READ called, \$buf=$buf, \$len=$len, \$offset=$offset";
515 }
516
5f05dabc 517=item READLINE this
518
519This method will be called when the handle is read from. The method
520should return undef when there is no more data.
521
2ae324a7 522 sub READLINE {
523 $r = shift;
524 return "PRINT called $$r times\n"
774d564b 525 }
5f05dabc 526
2ae324a7 527=item GETC this
528
529This method will be called when the C<getc> function is called.
530
531 sub GETC { print "Don't GETC, Get Perl"; return "a"; }
532
5f05dabc 533=item DESTROY this
534
535As with the other types of ties, this method will be called when the
536tied handle is about to be destroyed. This is useful for debugging and
537possibly for cleaning up.
538
2ae324a7 539 sub DESTROY {
774d564b 540 print "</shout>\n";
541 }
5f05dabc 542
543=back
544
54310121 545=head2 Malloc enhancements
aa689395 546
2ae324a7 547Four new compilation flags are recognized by malloc.c. (They have no
548effect if perl is compiled with system malloc().)
549
550=over
551
552=item -DDEBUGGING_MSTATS
553
554If perl is compiled with C<DEBUGGING_MSTATS> defined, you can print
555memory statistics at runtime by running Perl thusly:
aa689395 556
557 env PERL_DEBUG_MSTATS=2 perl your_script_here
558
559The value of 2 means to print statistics after compilation and on
560exit; with a value of 1, the statistics ares printed only on exit.
561(If you want the statistics at an arbitrary time, you'll need to
562install the optional module Devel::Peek.)
563
aa689395 564=item -DEMERGENCY_SBRK
565
566If this macro is defined, running out of memory need not be a fatal
567error: a memory pool can allocated by assigning to the special
568variable C<$^M>. See L<"$^M">.
774d564b 569
aa689395 570=item -DPACK_MALLOC
571
572Perl memory allocation is by bucket with sizes close to powers of two.
573Because of these malloc overhead may be big, especially for data of
574size exactly a power of two. If C<PACK_MALLOC> is defined, perl uses
575a slightly different algorithm for small allocations (up to 64 bytes
576long), which makes it possible to have overhead down to 1 byte for
577allocations which are powers of two (and appear quite often).
578
579Expected memory savings (with 8-byte alignment in C<alignbytes>) is
580about 20% for typical Perl usage. Expected slowdown due to additional
581malloc overhead is in fractions of a percent (hard to measure, because
582of the effect of saved memory on speed).
583
584=item -DTWO_POT_OPTIMIZE
585
586Similarly to C<PACK_MALLOC>, this macro improves allocations of data
587with size close to a power of two; but this works for big allocations
588(starting with 16K by default). Such allocations are typical for big
589hashes and special-purpose scripts, especially image processing.
590
591On recent systems, the fact that perl requires 2M from system for 1M
592allocation will not affect speed of execution, since the tail of such
593a chunk is not going to be touched (and thus will not require real
594memory). However, it may result in a premature out-of-memory error.
595So if you will be manipulating very large blocks with sizes close to
596powers of two, it would be wise to define this macro.
597
598Expected saving of memory is 0-100% (100% in applications which
599require most memory in such 2**n chunks); expected slowdown is
600negligible.
601
602=back
603
54310121 604=head2 Miscellaneous efficiency enhancements
774d564b 605
606Functions that have an empty prototype and that do nothing but return
607a fixed value are now inlined (e.g. C<sub PI () { 3.14159 }>).
608
aa689395 609Each unique hash key is only allocated once, no matter how many hashes
610have an entry with that key. So even if you have 100 copies of the
68dc0745 611same hash, the hash keys never have to be reallocated.
aa689395 612
5f05dabc 613=head1 Pragmata
614
54310121 615Six new pragmatic modules exist:
5f05dabc 616
617=over
618
54310121 619=item use autouse MODULE => qw(sub1 sub2 sub3)
620
621Defers C<require MODULE> until someone calls one of the specified
622subroutines (which must be exported by MODULE). This pragma should be
623used with caution, and only when necessary.
624
5f05dabc 625=item use blib
626
774d564b 627=item use blib 'dir'
628
5f05dabc 629Looks for MakeMaker-like I<'blib'> directory structure starting in
630I<dir> (or current directory) and working back up to five levels of
631parent directories.
632
633Intended for use on command line with B<-M> option as a way of testing
634arbitrary scripts against an uninstalled version of a package.
635
54310121 636=item use constant NAME => VALUE
637
638Provides a convenient interface for creating compile-time constants,
639See L<perlsub/"Constant Functions">.
640
5f05dabc 641=item use locale
642
643Tells the compiler to enable (or disable) the use of POSIX locales for
54310121 644builtin operations.
5f05dabc 645
646When C<use locale> is in effect, the current LC_CTYPE locale is used
647for regular expressions and case mapping; LC_COLLATE for string
648ordering; and LC_NUMERIC for numeric formating in printf and sprintf
649(but B<not> in print). LC_NUMERIC is always used in write, since
650lexical scoping of formats is problematic at best.
651
652Each C<use locale> or C<no locale> affects statements to the end of
653the enclosing BLOCK or, if not inside a BLOCK, to the end of the
654current file. Locales can be switched and queried with
655POSIX::setlocale().
656
657See L<perllocale> for more information.
658
659=item use ops
660
7cfe7857 661Disable unsafe opcodes, or any named opcodes, when compiling Perl code.
5f05dabc 662
ff0cee69 663=item use vmsish
664
665Enable VMS-specific language features. Currently, there are three
aa689395 666VMS-specific features available: 'status', which makes C<$?> and
ff0cee69 667C<system> return genuine VMS status values instead of emulating POSIX;
668'exit', which makes C<exit> take a genuine VMS status value instead of
669assuming that C<exit 1> is an error; and 'time', which makes all times
670relative to the local time zone, in the VMS tradition.
671
5f05dabc 672=back
673
674=head1 Modules
675
5cd24f17 676=head2 Required Updates
677
678Though Perl 5.004 is compatible with almost all modules that work
679with Perl 5.003, there are a few exceptions:
680
681 Module Required Version for Perl 5.004
682 ------ -------------------------------
137443ea 683 Filter Filter-1.12
684 LWP libwww-perl-5.08
5cd24f17 685 Tk Tk400.202 (-w makes noise)
686
137443ea 687Also, the majordomo mailing list program, version 1.94.1, doesn't work
688with Perl 5.004 (nor with perl 4), because it executes an invalid
689regular expression. This bug is fixed in majordomo version 1.94.2.
690
54310121 691=head2 Installation directories
f86702cc 692
693The I<installperl> script now places the Perl source files for
694extensions in the architecture-specific library directory, which is
695where the shared libraries for extensions have always been. This
696change is intended to allow administrators to keep the Perl 5.004
697library directory unchanged from a previous version, without running
698the risk of binary incompatibility between extensions' Perl source and
699shared libraries.
700
54310121 701=head2 Module information summary
5f05dabc 702
774d564b 703Brand new modules, arranged by topic rather than strictly
704alphabetically:
705
137443ea 706 CGI.pm Web server interface ("Common Gateway Interface")
707 CGI/Apache.pm Support for Apache's Perl module
708 CGI/Carp.pm Log server errors with helpful context
709 CGI/Fast.pm Support for FastCGI (persistent server process)
710 CGI/Push.pm Support for server push
711 CGI/Switch.pm Simple interface for multiple server types
712
713 CPAN Interface to Comprehensive Perl Archive Network
714 CPAN::FirstTime Utility for creating CPAN configuration file
715 CPAN::Nox Runs CPAN while avoiding compiled extensions
5f05dabc 716
717 IO.pm Top-level interface to IO::* classes
718 IO/File.pm IO::File extension Perl module
719 IO/Handle.pm IO::Handle extension Perl module
720 IO/Pipe.pm IO::Pipe extension Perl module
721 IO/Seekable.pm IO::Seekable extension Perl module
722 IO/Select.pm IO::Select extension Perl module
723 IO/Socket.pm IO::Socket extension Perl module
724
725 Opcode.pm Disable named opcodes when compiling Perl code
726
727 ExtUtils/Embed.pm Utilities for embedding Perl in C programs
728 ExtUtils/testlib.pm Fixes up @INC to use just-built extension
729
5f05dabc 730 FindBin.pm Find path of currently executing program
731
8cc95fdb 732 Class/Struct.pm Declare struct-like datatypes as Perl classes
46fc3d4c 733 File/stat.pm By-name interface to Perl's builtin stat
734 Net/hostent.pm By-name interface to Perl's builtin gethost*
735 Net/netent.pm By-name interface to Perl's builtin getnet*
736 Net/protoent.pm By-name interface to Perl's builtin getproto*
737 Net/servent.pm By-name interface to Perl's builtin getserv*
738 Time/gmtime.pm By-name interface to Perl's builtin gmtime
739 Time/localtime.pm By-name interface to Perl's builtin localtime
8cc95fdb 740 Time/tm.pm Internal object for Time::{gm,local}time
46fc3d4c 741 User/grent.pm By-name interface to Perl's builtin getgr*
742 User/pwent.pm By-name interface to Perl's builtin getpw*
5f05dabc 743
774d564b 744 Tie/RefHash.pm Base class for tied hashes with references as keys
7a4c00b4 745
5f05dabc 746 UNIVERSAL.pm Base class for *ALL* classes
747
54310121 748=head2 Fcntl
749
750New constants in the existing Fcntl modules are now supported,
751provided that your operating system happens to support them:
752
753 F_GETOWN F_SETOWN
754 O_ASYNC O_DEFER O_DSYNC O_FSYNC O_SYNC
755 O_EXLOCK O_SHLOCK
756
757These constants are intended for use with the Perl operators sysopen()
758and fcntl() and the basic database modules like SDBM_File. For the
759exact meaning of these and other Fcntl constants please refer to your
760operating system's documentation for fcntl() and open().
761
762In addition, the Fcntl module now provides these constants for use
763with the Perl operator flock():
764
765 LOCK_SH LOCK_EX LOCK_NB LOCK_UN
766
767These constants are defined in all environments (because where there is
768no flock() system call, Perl emulates it). However, for historical
769reasons, these constants are not exported unless they are explicitly
770requested with the ":flock" tag (e.g. C<use Fcntl ':flock'>).
771
5f05dabc 772=head2 IO
773
774The IO module provides a simple mechanism to load all of the IO modules at one
775go. Currently this includes:
776
777 IO::Handle
778 IO::Seekable
779 IO::File
780 IO::Pipe
781 IO::Socket
782
783For more information on any of these modules, please see its
784respective documentation.
785
786=head2 Math::Complex
787
788The Math::Complex module has been totally rewritten, and now supports
789more operations. These are overloaded:
790
791 + - * / ** <=> neg ~ abs sqrt exp log sin cos atan2 "" (stringify)
792
793And these functions are now exported:
794
795 pi i Re Im arg
5cd24f17 796 log10 logn ln cbrt root
797 tan
798 csc sec cot
799 asin acos atan
800 acsc asec acot
801 sinh cosh tanh
802 csch sech coth
803 asinh acosh atanh
804 acsch asech acoth
5f05dabc 805 cplx cplxe
806
5aabfad6 807=head2 Math::Trig
808
5cd24f17 809This new module provides a simpler interface to parts of Math::Complex for
5aabfad6 810those who need trigonometric functions only for real numbers.
811
0a753a76 812=head2 DB_File
813
814There have been quite a few changes made to DB_File. Here are a few of
815the highlights:
816
817=over
818
819=item *
820
821Fixed a handful of bugs.
822
823=item *
824
825By public demand, added support for the standard hash function exists().
826
827=item *
828
829Made it compatible with Berkeley DB 1.86.
830
831=item *
832
833Made negative subscripts work with RECNO interface.
834
835=item *
836
837Changed the default flags from O_RDWR to O_CREAT|O_RDWR and the default
838mode from 0640 to 0666.
839
840=item *
841
842Made DB_File automatically import the open() constants (O_RDWR,
843O_CREAT etc.) from Fcntl, if available.
844
845=item *
846
847Updated documentation.
848
849=back
850
851Refer to the HISTORY section in DB_File.pm for a complete list of
852changes. Everything after DB_File 1.01 has been added since 5.003.
853
854=head2 Net::Ping
855
856Major rewrite - support added for both udp echo and real icmp pings.
857
54310121 858=head2 Object-oriented overrides for builtin operators
5f05dabc 859
54310121 860Many of the Perl builtins returning lists now have
5f05dabc 861object-oriented overrides. These are:
862
863 File::stat
864 Net::hostent
865 Net::netent
866 Net::protoent
867 Net::servent
868 Time::gmtime
869 Time::localtime
870 User::grent
871 User::pwent
872
873For example, you can now say
874
875 use File::stat;
876 use User::pwent;
877 $his = (stat($filename)->st_uid == pwent($whoever)->pw_uid);
878
774d564b 879=head1 Utility Changes
5f05dabc 880
774d564b 881=head2 xsubpp
5f05dabc 882
0a753a76 883=over
884
774d564b 885=item C<void> XSUBs now default to returning nothing
886
887Due to a documentation/implementation bug in previous versions of
888Perl, XSUBs with a return type of C<void> have actually been
889returning one value. Usually that value was the GV for the XSUB,
890but sometimes it was some already freed or reused value, which would
891sometimes lead to program failure.
892
893In Perl 5.004, if an XSUB is declared as returning C<void>, it
894actually returns no value, i.e. an empty list (though there is a
895backward-compatibility exception; see below). If your XSUB really
896does return an SV, you should give it a return type of C<SV *>.
897
898For backward compatibility, I<xsubpp> tries to guess whether a
899C<void> XSUB is really C<void> or if it wants to return an C<SV *>.
900It does so by examining the text of the XSUB: if I<xsubpp> finds
901what looks like an assignment to C<ST(0)>, it assumes that the
902XSUB's return type is really C<SV *>.
5f05dabc 903
0a753a76 904=back
905
906=head1 C Language API Changes
907
908=over
909
910=item C<gv_fetchmethod> and C<perl_call_sv>
911
912The C<gv_fetchmethod> function finds a method for an object, just like
913in Perl 5.003. The GV it returns may be a method cache entry.
914However, in Perl 5.004, method cache entries are not visible to users;
915therefore, they can no longer be passed directly to C<perl_call_sv>.
916Instead, you should use the C<GvCV> macro on the GV to extract its CV,
917and pass the CV to C<perl_call_sv>.
918
919The most likely symptom of passing the result of C<gv_fetchmethod> to
920C<perl_call_sv> is Perl's producing an "Undefined subroutine called"
921error on the I<second> call to a given method (since there is no cache
922on the first call).
923
137443ea 924=item C<perl_eval_pv>
925
8903cb82 926A new function handy for eval'ing strings of Perl code inside C code.
137443ea 927This function returns the value from the eval statement, which can
928be used instead of fetching globals from the symbol table. See
929L<perlguts>, L<perlembed> and L<perlcall> for details and examples.
930
1e422769 931=item Extended API for manipulating hashes
932
933Internal handling of hash keys has changed. The old hashtable API is
934still fully supported, and will likely remain so. The additions to the
935API allow passing keys as C<SV*>s, so that C<tied> hashes can be given
54310121 936real scalars as keys rather than plain strings (nontied hashes still
1e422769 937can only use strings as keys). New extensions must use the new hash
938access functions and macros if they wish to use C<SV*> keys. These
939additions also make it feasible to manipulate C<HE*>s (hash entries),
940which can be more efficient. See L<perlguts> for details.
941
0a753a76 942=back
943
5f05dabc 944=head1 Documentation Changes
945
946Many of the base and library pods were updated. These
947new pods are included in section 1:
948
0a753a76 949=over
5f05dabc 950
774d564b 951=item L<perldelta>
5f05dabc 952
71be2cbc 953This document.
5f05dabc 954
71be2cbc 955=item L<perllocale>
5f05dabc 956
71be2cbc 957Locale support (internationalization and localization).
5f05dabc 958
959=item L<perltoot>
960
961Tutorial on Perl OO programming.
962
71be2cbc 963=item L<perlapio>
964
965Perl internal IO abstraction interface.
966
5f05dabc 967=item L<perldebug>
968
969Although not new, this has been massively updated.
970
971=item L<perlsec>
972
973Although not new, this has been massively updated.
974
975=back
976
977=head1 New Diagnostics
978
979Several new conditions will trigger warnings that were
980silent before. Some only affect certain platforms.
2ae324a7 981The following new warnings and errors outline these.
774d564b 982These messages are classified as follows (listed in
983increasing order of desperation):
984
985 (W) A warning (optional).
986 (D) A deprecation (optional).
987 (S) A severe warning (mandatory).
988 (F) A fatal error (trappable).
989 (P) An internal error you should never see (trappable).
54310121 990 (X) A very fatal error (nontrappable).
774d564b 991 (A) An alien error message (not generated by Perl).
5f05dabc 992
0a753a76 993=over
5f05dabc 994
995=item "my" variable %s masks earlier declaration in same scope
996
997(S) A lexical variable has been redeclared in the same scope, effectively
998eliminating all access to the previous instance. This is almost always
999a typographical error. Note that the earlier variable will still exist
1000until the end of the scope or until all closure referents to it are
1001destroyed.
1002
774d564b 1003=item %s argument is not a HASH element or slice
1004
1005(F) The argument to delete() must be either a hash element, such as
1006
1007 $foo{$bar}
1008 $ref->[12]->{"susie"}
1009
1010or a hash slice, such as
1011
1012 @foo{$bar, $baz, $xyzzy}
1013 @{$ref->[12]}{"susie", "queue"}
1014
5f05dabc 1015=item Allocation too large: %lx
1016
54310121 1017(X) You can't allocate more than 64K on an MS-DOS machine.
5f05dabc 1018
1019=item Allocation too large
1020
1021(F) You can't allocate more than 2^31+"small amount" bytes.
1022
54310121 1023=item Applying %s to %s will act on scalar(%s)
1024
1025(W) The pattern match (//), substitution (s///), and translation (tr///)
1026operators work on scalar values. If you apply one of them to an array
1027or a hash, it will convert the array or hash to a scalar value -- the
1028length of an array, or the population info of a hash -- and then work on
1029that scalar value. This is probably not what you meant to do. See
1030L<perlfunc/grep> and L<perlfunc/map> for alternatives.
1031
1032=item Attempt to free nonexistent shared string
5f05dabc 1033
1034(P) Perl maintains a reference counted internal table of strings to
1035optimize the storage and access of hash keys and other strings. This
1036indicates someone tried to decrement the reference count of a string
1037that can no longer be found in the table.
1038
1039=item Attempt to use reference as lvalue in substr
1040
1041(W) You supplied a reference as the first argument to substr() used
1042as an lvalue, which is pretty strange. Perhaps you forgot to
1043dereference it first. See L<perlfunc/substr>.
1044
774d564b 1045=item Can't use bareword ("%s") as %s ref while "strict refs" in use
1046
1047(F) Only hard references are allowed by "strict refs". Symbolic references
1048are disallowed. See L<perlref>.
1049
54310121 1050=item Cannot resolve method `%s' overloading `%s' in package `%s'
1051
1052(P) Internal error trying to resolve overloading specified by a method
1053name (as opposed to a subroutine reference).
1054
774d564b 1055=item Constant subroutine %s redefined
1056
1057(S) You redefined a subroutine which had previously been eligible for
dc848c6f 1058inlining. See L<perlsub/"Constant Functions"> for commentary and
54310121 1059workarounds.
1060
1061=item Constant subroutine %s undefined
1062
1063(S) You undefined a subroutine which had previously been eligible for
774d564b 1064inlining. See L<perlsub/"Constant Functions"> for commentary and
1065workarounds.
1066
54310121 1067=item Copy method did not return a reference
1068
1069(F) The method which overloads "=" is buggy. See L<overload/Copy Constructor>.
1070
774d564b 1071=item Died
1072
1073(F) You passed die() an empty string (the equivalent of C<die "">) or
1074you called it with no args and both C<$@> and C<$_> were empty.
1075
54310121 1076=item Exiting pseudo-block via %s
1077
1078(W) You are exiting a rather special block construct (like a sort block or
1079subroutine) by unconventional means, such as a goto, or a loop control
1080statement. See L<perlfunc/sort>.
1081
8903cb82 1082=item Identifier too long
1083
1084(F) Perl limits identifiers (names for variables, functions, etc.) to
1085252 characters for simple names, somewhat more for compound names (like
1086C<$A::B>). You've exceeded Perl's limits. Future versions of Perl are
1087likely to eliminate these arbitrary limitations.
1088
54310121 1089=item Illegal character %s (carriage return)
1090
1091(F) A carriage return character was found in the input. This is an
1092error, and not a warning, because carriage return characters can break
1093multi-line strings, including here documents (e.g., C<print E<lt>E<lt>EOF;>).
1094
1095=item Illegal switch in PERL5OPT: %s
1096
1097(X) The PERL5OPT environment variable may only be used to set the
1098following switches: B<-[DIMUdmw]>.
1099
5f05dabc 1100=item Integer overflow in hex number
1101
1102(S) The literal hex number you have specified is too big for your
1103architecture. On a 32-bit architecture the largest hex literal is
11040xFFFFFFFF.
1105
1106=item Integer overflow in octal number
1107
1108(S) The literal octal number you have specified is too big for your
1109architecture. On a 32-bit architecture the largest octal literal is
1110037777777777.
1111
5cd24f17 1112=item internal error: glob failed
1113
1114(P) Something went wrong with the external program(s) used for C<glob>
1115and C<E<lt>*.cE<gt>>. This may mean that your csh (C shell) is
1116broken. If so, you should change all of the csh-related variables in
1117config.sh: If you have tcsh, make the variables refer to it as if it
1118were csh (e.g. C<full_csh='/usr/bin/tcsh'>); otherwise, make them all
1119empty (except that C<d_csh> should be C<'undef'>) so that Perl will
1120think csh is missing. In either case, after editing config.sh, run
1121C<./Configure -S> and rebuild Perl.
1122
8903cb82 1123=item Invalid type in pack: '%s'
1124
1125(F) The given character is not a valid pack type. See L<perlfunc/pack>.
1126
1127=item Invalid type in unpack: '%s'
1128
1129(F) The given character is not a valid unpack type. See L<perlfunc/unpack>.
1130
774d564b 1131=item Name "%s::%s" used only once: possible typo
1132
1133(W) Typographical errors often show up as unique variable names.
1134If you had a good reason for having a unique name, then just mention
1135it again somehow to suppress the message (the C<use vars> pragma is
1136provided for just this purpose).
1137
5f05dabc 1138=item Null picture in formline
1139
1140(F) The first argument to formline must be a valid format picture
1141specification. It was found to be empty, which probably means you
1142supplied it an uninitialized value. See L<perlform>.
1143
1144=item Offset outside string
1145
1146(F) You tried to do a read/write/send/recv operation with an offset
1147pointing outside the buffer. This is difficult to imagine.
1148The sole exception to this is that C<sysread()>ing past the buffer
1149will extend the buffer and zero pad the new area.
1150
1151=item Out of memory!
1152
1153(X|F) The malloc() function returned 0, indicating there was insufficient
1154remaining memory (or virtual memory) to satisfy the request.
1155
1156The request was judged to be small, so the possibility to trap it
1157depends on the way Perl was compiled. By default it is not trappable.
1158However, if compiled for this, Perl may use the contents of C<$^M> as
1159an emergency pool after die()ing with this message. In this case the
1160error is trappable I<once>.
1161
1162=item Out of memory during request for %s
1163
1164(F) The malloc() function returned 0, indicating there was insufficient
1165remaining memory (or virtual memory) to satisfy the request. However,
1166the request was judged large enough (compile-time default is 64K), so
1167a possibility to shut down by trapping this error is granted.
1168
1169=item Possible attempt to put comments in qw() list
1170
774d564b 1171(W) qw() lists contain items separated by whitespace; as with literal
1172strings, comment characters are not ignored, but are instead treated
1173as literal data. (You may have used different delimiters than the
1174exclamation marks parentheses shown here; braces are also frequently
1175used.)
1176
1177You probably wrote something like this:
5f05dabc 1178
2ae324a7 1179 @list = qw(
774d564b 1180 a # a comment
5f05dabc 1181 b # another comment
774d564b 1182 );
5f05dabc 1183
1184when you should have written this:
1185
774d564b 1186 @list = qw(
2ae324a7 1187 a
5f05dabc 1188 b
774d564b 1189 );
1190
1191If you really want comments, build your list the
1192old-fashioned way, with quotes and commas:
1193
1194 @list = (
1195 'a', # a comment
1196 'b', # another comment
1197 );
5f05dabc 1198
1199=item Possible attempt to separate words with commas
1200
774d564b 1201(W) qw() lists contain items separated by whitespace; therefore commas
1202aren't needed to separate the items. (You may have used different
1203delimiters than the parentheses shown here; braces are also frequently
1204used.)
5f05dabc 1205
2ae324a7 1206You probably wrote something like this:
5f05dabc 1207
774d564b 1208 qw! a, b, c !;
1209
1210which puts literal commas into some of the list items. Write it without
1211commas if you don't want them to appear in your data:
1212
1213 qw! a b c !;
5f05dabc 1214
774d564b 1215=item Scalar value @%s{%s} better written as $%s{%s}
1216
1217(W) You've used a hash slice (indicated by @) to select a single element of
1218a hash. Generally it's better to ask for a scalar value (indicated by $).
1219The difference is that C<$foo{&bar}> always behaves like a scalar, both when
1220assigning to it and when evaluating its argument, while C<@foo{&bar}> behaves
1221like a list when you assign to it, and provides a list context to its
1222subscript, which can do weird things if you're expecting only one subscript.
5f05dabc 1223
54310121 1224=item Stub found while resolving method `%s' overloading `%s' in package `%s'
1225
1226(P) Overloading resolution over @ISA tree may be broken by importing stubs.
1227Stubs should never be implicitely created, but explicit calls to C<can>
1228may break this.
1229
1230=item Too late for "B<-T>" option
1231
1232(X) The #! line (or local equivalent) in a Perl script contains the
1233B<-T> option, but Perl was not invoked with B<-T> in its argument
1234list. This is an error because, by the time Perl discovers a B<-T> in
1235a script, it's too late to properly taint everything from the
1236environment. So Perl gives up.
1237
5f05dabc 1238=item untie attempted while %d inner references still exist
1239
1240(W) A copy of the object returned from C<tie> (or C<tied>) was still
1241valid when C<untie> was called.
1242
54310121 1243=item Unrecognized character %s
1244
1245(F) The Perl parser has no idea what to do with the specified character
1246in your Perl script (or eval). Perhaps you tried to run a compressed
1247script, a binary program, or a directory as a Perl program.
1248
1249=item Unsupported function fork
1250
1251(F) Your version of executable does not support forking.
1252
1253Note that under some systems, like OS/2, there may be different flavors of
1254Perl executables, some of which may support fork, some not. Try changing
1255the name you call Perl by to C<perl_>, C<perl__>, and so on.
1256
5cd24f17 1257=item Use of "$$<digit>" to mean "${$}<digit>" is deprecated
1258
1259(D) Perl versions before 5.004 misinterpreted any type marker followed
1260by "$" and a digit. For example, "$$0" was incorrectly taken to mean
1261"${$}0" instead of "${$0}". This bug is (mostly) fixed in Perl 5.004.
1262
1263However, the developers of Perl 5.004 could not fix this bug completely,
1264because at least two widely-used modules depend on the old meaning of
1265"$$0" in a string. So Perl 5.004 still interprets "$$<digit>" in the
1266old (broken) way inside strings; but it generates this message as a
1267warning. And in Perl 5.005, this special treatment will cease.
1268
54310121 1269=item Value of %s can be "0"; test with defined()
774d564b 1270
54310121 1271(W) In a conditional expression, you used <HANDLE>, <*> (glob), C<each()>,
1272or C<readdir()> as a boolean value. Each of these constructs can return a
1273value of "0"; that would make the conditional expression false, which is
1274probably not what you intended. When using these constructs in conditional
1275expressions, test their values with the C<defined> operator.
774d564b 1276
1277=item Variable "%s" may be unavailable
1278
1279(W) An inner (nested) I<anonymous> subroutine is inside a I<named>
1280subroutine, and outside that is another subroutine; and the anonymous
1281(innermost) subroutine is referencing a lexical variable defined in
1282the outermost subroutine. For example:
1283
1284 sub outermost { my $a; sub middle { sub { $a } } }
1285
1286If the anonymous subroutine is called or referenced (directly or
1287indirectly) from the outermost subroutine, it will share the variable
1288as you would expect. But if the anonymous subroutine is called or
1289referenced when the outermost subroutine is not active, it will see
1290the value of the shared variable as it was before and during the
1291*first* call to the outermost subroutine, which is probably not what
1292you want.
1293
1294In these circumstances, it is usually best to make the middle
1295subroutine anonymous, using the C<sub {}> syntax. Perl has specific
1296support for shared variables in nested anonymous subroutines; a named
1297subroutine in between interferes with this feature.
1298
1299=item Variable "%s" will not stay shared
1300
1301(W) An inner (nested) I<named> subroutine is referencing a lexical
1302variable defined in an outer subroutine.
1303
1304When the inner subroutine is called, it will probably see the value of
1305the outer subroutine's variable as it was before and during the
1306*first* call to the outer subroutine; in this case, after the first
1307call to the outer subroutine is complete, the inner and outer
1308subroutines will no longer share a common value for the variable. In
1309other words, the variable will no longer be shared.
1310
1311Furthermore, if the outer subroutine is anonymous and references a
1312lexical variable outside itself, then the outer and inner subroutines
1313will I<never> share the given variable.
1314
1315This problem can usually be solved by making the inner subroutine
1316anonymous, using the C<sub {}> syntax. When inner anonymous subs that
1317reference variables in outer subroutines are called or referenced,
54310121 1318they are automatically rebound to the current values of such
774d564b 1319variables.
1320
1321=item Warning: something's wrong
1322
1323(W) You passed warn() an empty string (the equivalent of C<warn "">) or
1324you called it with no args and C<$_> was empty.
1325
54310121 1326=item Ill-formed logical name |%s| in prime_env_iter
1327
1328(W) A warning peculiar to VMS. A logical name was encountered when preparing
1329to iterate over %ENV which violates the syntactic rules governing logical
1330names. Since it cannot be translated normally, it is skipped, and will not
1331appear in %ENV. This may be a benign occurrence, as some software packages
1332might directly modify logical name tables and introduce nonstandard names,
1333or it may indicate that a logical name table has been corrupted.
1334
774d564b 1335=item Got an error from DosAllocMem
5f05dabc 1336
774d564b 1337(P) An error peculiar to OS/2. Most probably you're using an obsolete
1338version of Perl, and this should not happen anyway.
5f05dabc 1339
1340=item Malformed PERLLIB_PREFIX
1341
dc848c6f 1342(F) An error peculiar to OS/2. PERLLIB_PREFIX should be of the form
5f05dabc 1343
1344 prefix1;prefix2
1345
1346or
1347
1348 prefix1 prefix2
1349
dc848c6f 1350with nonempty prefix1 and prefix2. If C<prefix1> is indeed a prefix
1351of a builtin library search path, prefix2 is substituted. The error
1352may appear if components are not found, or are too long. See
1353"PERLLIB_PREFIX" in F<README.os2>.
5f05dabc 1354
1355=item PERL_SH_DIR too long
1356
1357(F) An error peculiar to OS/2. PERL_SH_DIR is the directory to find the
dc848c6f 1358C<sh>-shell in. See "PERL_SH_DIR" in F<README.os2>.
5f05dabc 1359
1360=item Process terminated by SIG%s
1361
1362(W) This is a standard message issued by OS/2 applications, while *nix
dc848c6f 1363applications die in silence. It is considered a feature of the OS/2
1364port. One can easily disable this by appropriate sighandlers, see
1365L<perlipc/"Signals">. See also "Process terminated by SIGTERM/SIGINT"
1366in F<README.os2>.
5f05dabc 1367
1368=back
1369
1370=head1 BUGS
1371
774d564b 1372If you find what you think is a bug, you might check the headers of
1373recently posted articles in the comp.lang.perl.misc newsgroup.
1374There may also be information at http://www.perl.com/perl/, the Perl
1375Home Page.
5f05dabc 1376
1377If you believe you have an unreported bug, please run the B<perlbug>
9607fc9c 1378program included with your release. Make sure you trim your bug down
1379to a tiny but sufficient test case. Your bug report, along with the
1380output of C<perl -V>, will be sent off to <F<perlbug@perl.com>> to be
1381analysed by the Perl porting team.
5f05dabc 1382
1383=head1 SEE ALSO
1384
1385The F<Changes> file for exhaustive details on what changed.
1386
1387The F<INSTALL> file for how to build Perl. This file has been
1388significantly updated for 5.004, so even veteran users should
1389look through it.
1390
1391The F<README> file for general stuff.
1392
1393The F<Copying> file for copyright information.
1394
1395=head1 HISTORY
1396
1397Constructed by Tom Christiansen, grabbing material with permission
1398from innumerable contributors, with kibitzing by more than a few Perl
1399porters.
1400
2ae324a7 1401Last update: Sat Mar 8 19:51:26 EST 1997