1PERL5005DELTA(1)       Perl Programmers Reference Guide       PERL5005DELTA(1)
2
3
4

NAME

6       perl5005delta - what's new for perl5.005
7

DESCRIPTION

9       This document describes differences between the 5.004 release and this
10       one.
11

About the new versioning system

13       Perl is now developed on two tracks: a maintenance track that makes
14       small, safe updates to released production versions with emphasis on
15       compatibility; and a development track that pursues more aggressive
16       evolution.  Maintenance releases (which should be considered production
17       quality) have subversion numbers that run from 1 to 49, and development
18       releases (which should be considered "alpha" quality) run from 50 to
19       99.
20
21       Perl 5.005 is the combined product of the new dual-track development
22       scheme.
23

Incompatible Changes

25       WARNING:  This version is not binary compatible with Perl 5.004.
26
27       Starting with Perl 5.004_50 there were many deep and far-reaching
28       changes to the language internals.  If you have dynamically loaded
29       extensions that you built under perl 5.003 or 5.004, you can continue
30       to use them with 5.004, but you will need to rebuild and reinstall
31       those extensions to use them 5.005.  See INSTALL for detailed instruc‐
32       tions on how to upgrade.
33
34       Default installation structure has changed
35
36       The new Configure defaults are designed to allow a smooth upgrade from
37       5.004 to 5.005, but you should read INSTALL for a detailed discussion
38       of the changes in order to adapt them to your system.
39
40       Perl Source Compatibility
41
42       When none of the experimental features are enabled, there should be
43       very few user-visible Perl source compatibility issues.
44
45       If threads are enabled, then some caveats apply. @_ and $_ become lexi‐
46       cal variables.  The effect of this should be largely transparent to the
47       user, but there are some boundary conditions under which user will need
48       to be aware of the issues.  For example, "local(@_)" results in a
49       "Can't localize lexical variable @_ ..." message.  This may be enabled
50       in a future version.
51
52       Some new keywords have been introduced.  These are generally expected
53       to have very little impact on compatibility.  See "New "INIT" keyword",
54       "New "lock" keyword", and "New "qr//" operator".
55
56       Certain barewords are now reserved.  Use of these will provoke a warn‐
57       ing if you have asked for them with the "-w" switch.  See ""our" is now
58       a reserved word".
59
60       C Source Compatibility
61
62       There have been a large number of changes in the internals to support
63       the new features in this release.
64
65       ·   Core sources now require ANSI C compiler
66
67           An ANSI C compiler is now required to build perl.  See INSTALL.
68
69       ·   All Perl global variables must now be referenced with an explicit
70           prefix
71
72           All Perl global variables that are visible for use by extensions
73           now have a "PL_" prefix.  New extensions should "not" refer to perl
74           globals by their unqualified names.  To preserve sanity, we provide
75           limited backward compatibility for globals that are being widely
76           used like "sv_undef" and "na" (which should now be written as
77           "PL_sv_undef", "PL_na" etc.)
78
79           If you find that your XS extension does not compile anymore because
80           a perl global is not visible, try adding a "PL_" prefix to the
81           global and rebuild.
82
83           It is strongly recommended that all functions in the Perl API that
84           don't begin with "perl" be referenced with a "Perl_" prefix.  The
85           bare function names without the "Perl_" prefix are supported with
86           macros, but this support may cease in a future release.
87
88           See perlapi.
89
90       ·   Enabling threads has source compatibility issues
91
92           Perl built with threading enabled requires extensions to use the
93           new "dTHR" macro to initialize the handle to access per-thread
94           data.  If you see a compiler error that talks about the variable
95           "thr" not being declared (when building a module that has XS code),
96           you need to add "dTHR;" at the beginning of the block that elicited
97           the error.
98
99           The API function "perl_get_sv("@",FALSE)" should be used instead of
100           directly accessing perl globals as "GvSV(errgv)".  The API call is
101           backward compatible with existing perls and provides source compat‐
102           ibility with threading is enabled.
103
104           See "C Source Compatibility" for more information.
105
106       Binary Compatibility
107
108       This version is NOT binary compatible with older versions.  All exten‐
109       sions will need to be recompiled.  Further binaries built with threads
110       enabled are incompatible with binaries built without.  This should
111       largely be transparent to the user, as all binary incompatible configu‐
112       rations have their own unique architecture name, and extension binaries
113       get installed at unique locations.  This allows coexistence of several
114       configurations in the same directory hierarchy.  See INSTALL.
115
116       Security fixes may affect compatibility
117
118       A few taint leaks and taint omissions have been corrected.  This may
119       lead to "failure" of scripts that used to work with older versions.
120       Compiling with -DINCOMPLETE_TAINTS provides a perl with minimal amounts
121       of changes to the tainting behavior.  But note that the resulting perl
122       will have known insecurities.
123
124       Oneliners with the "-e" switch do not create temporary files anymore.
125
126       Relaxed new mandatory warnings introduced in 5.004
127
128       Many new warnings that were introduced in 5.004 have been made
129       optional.  Some of these warnings are still present, but perl's new
130       features make them less often a problem.  See "New Diagnostics".
131
132       Licensing
133
134       Perl has a new Social Contract for contributors.  See Porting/Contract.
135
136       The license included in much of the Perl documentation has changed.
137       Most of the Perl documentation was previously under the implicit GNU
138       General Public License or the Artistic License (at the user's choice).
139       Now much of the documentation unambiguously states the terms under
140       which it may be distributed.  Those terms are in general much less
141       restrictive than the GNU GPL.  See perl and the individual perl man‐
142       pages listed therein.
143

Core Changes

145       Threads
146
147       WARNING: Threading is considered an experimental feature.  Details of
148       the implementation may change without notice.  There are known limita‐
149       tions and some bugs.  These are expected to be fixed in future ver‐
150       sions.
151
152       See README.threads.
153
154       Compiler
155
156       WARNING: The Compiler and related tools are considered experimental.
157       Features may change without notice, and there are known limitations and
158       bugs.  Since the compiler is fully external to perl, the default con‐
159       figuration will build and install it.
160
161       The Compiler produces three different types of transformations of a
162       perl program.  The C backend generates C code that captures perl's
163       state just before execution begins.  It eliminates the compile-time
164       overheads of the regular perl interpreter, but the run-time performance
165       remains comparatively the same.  The CC backend generates optimized C
166       code equivalent to the code path at run-time.  The CC backend has
167       greater potential for big optimizations, but only a few optimizations
168       are implemented currently.  The Bytecode backend generates a platform
169       independent bytecode representation of the interpreter's state just
170       before execution.  Thus, the Bytecode back end also eliminates much of
171       the compilation overhead of the interpreter.
172
173       The compiler comes with several valuable utilities.
174
175       "B::Lint" is an experimental module to detect and warn about suspicious
176       code, especially the cases that the "-w" switch does not detect.
177
178       "B::Deparse" can be used to demystify perl code, and understand how
179       perl optimizes certain constructs.
180
181       "B::Xref" generates cross reference reports of all definition and use
182       of variables, subroutines and formats in a program.
183
184       "B::Showlex" show the lexical variables used by a subroutine or file at
185       a glance.
186
187       "perlcc" is a simple frontend for compiling perl.
188
189       See "ext/B/README", B, and the respective compiler modules.
190
191       Regular Expressions
192
193       Perl's regular expression engine has been seriously overhauled, and
194       many new constructs are supported.  Several bugs have been fixed.
195
196       Here is an itemized summary:
197
198       Many new and improved optimizations
199           Changes in the RE engine:
200
201                   Unneeded nodes removed;
202                   Substrings merged together;
203                   New types of nodes to process (SUBEXPR)* and similar expressions
204                       quickly, used if the SUBEXPR has no side effects and matches
205                       strings of the same length;
206                   Better optimizations by lookup for constant substrings;
207                   Better search for constants substrings anchored by $ ;
208
209           Changes in Perl code using RE engine:
210
211                   More optimizations to s/longer/short/;
212                   study() was not working;
213                   /blah/ may be optimized to an analogue of index() if $& $` $' not seen;
214                   Unneeded copying of matched-against string removed;
215                   Only matched part of the string is copying if $` $' were not seen;
216
217       Many bug fixes
218           Note that only the major bug fixes are listed here.  See Changes
219           for others.
220
221                   Backtracking might not restore start of $3.
222                   No feedback if max count for * or + on "complex" subexpression
223                       was reached, similarly (but at compile time) for {3,34567}
224                   Primitive restrictions on max count introduced to decrease a
225                       possibility of a segfault;
226                   (ZERO-LENGTH)* could segfault;
227                   (ZERO-LENGTH)* was prohibited;
228                   Long REs were not allowed;
229                   /RE/g could skip matches at the same position after a
230                     zero-length match;
231
232       New regular expression constructs
233           The following new syntax elements are supported:
234
235                   (?<=RE)
236                   (?<!RE)
237                   (?{ CODE })
238                   (?i-x)
239                   (?i:RE)
240                   (?(COND)YES_RE⎪NO_RE)
241                   (?>RE)
242                   \z
243
244       New operator for precompiled regular expressions
245           See "New "qr//" operator".
246
247       Other improvements
248                   Better debugging output (possibly with colors),
249                       even from non-debugging Perl;
250                   RE engine code now looks like C, not like assembler;
251                   Behaviour of RE modifiable by `use re' directive;
252                   Improved documentation;
253                   Test suite significantly extended;
254                   Syntax [:^upper:] etc., reserved inside character classes;
255
256       Incompatible changes
257                   (?i) localized inside enclosing group;
258                   $( is not interpolated into RE any more;
259                   /RE/g may match at the same position (with non-zero length)
260                       after a zero-length match (bug fix).
261
262       See perlre and perlop.
263
264       Improved malloc()
265
266       See banner at the beginning of "malloc.c" for details.
267
268       Quicksort is internally implemented
269
270       Perl now contains its own highly optimized qsort() routine.  The new
271       qsort() is resistant to inconsistent comparison functions, so Perl's
272       "sort()" will not provoke coredumps any more when given poorly written
273       sort subroutines.  (Some C library "qsort()"s that were being used
274       before used to have this problem.)  In our testing, the new "qsort()"
275       required the minimal number of pair-wise compares on average, among all
276       known "qsort()" implementations.
277
278       See "perlfunc/sort".
279
280       Reliable signals
281
282       Perl's signal handling is susceptible to random crashes, because sig‐
283       nals arrive asynchronously, and the Perl runtime is not reentrant at
284       arbitrary times.
285
286       However, one experimental implementation of reliable signals is avail‐
287       able when threads are enabled.  See "Thread::Signal".  Also see INSTALL
288       for how to build a Perl capable of threads.
289
290       Reliable stack pointers
291
292       The internals now reallocate the perl stack only at predictable times.
293       In particular, magic calls never trigger reallocations of the stack,
294       because all reentrancy of the runtime is handled using a "stack of
295       stacks".  This should improve reliability of cached stack pointers in
296       the internals and in XSUBs.
297
298       More generous treatment of carriage returns
299
300       Perl used to complain if it encountered literal carriage returns in
301       scripts.  Now they are mostly treated like whitespace within program
302       text.  Inside string literals and here documents, literal carriage
303       returns are ignored if they occur paired with linefeeds, or get inter‐
304       preted as whitespace if they stand alone.  This behavior means that
305       literal carriage returns in files should be avoided.  You can get the
306       older, more compatible (but less generous) behavior by defining the
307       preprocessor symbol "PERL_STRICT_CR" when building perl.  Of course,
308       all this has nothing whatever to do with how escapes like "\r" are han‐
309       dled within strings.
310
311       Note that this doesn't somehow magically allow you to keep all text
312       files in DOS format.  The generous treatment only applies to files that
313       perl itself parses.  If your C compiler doesn't allow carriage returns
314       in files, you may still be unable to build modules that need a C com‐
315       piler.
316
317       Memory leaks
318
319       "substr", "pos" and "vec" don't leak memory anymore when used in lvalue
320       context.  Many small leaks that impacted applications that embed multi‐
321       ple interpreters have been fixed.
322
323       Better support for multiple interpreters
324
325       The build-time option "-DMULTIPLICITY" has had many of the details
326       reworked.  Some previously global variables that should have been per-
327       interpreter now are.  With care, this allows interpreters to call each
328       other.  See the "PerlInterp" extension on CPAN.
329
330       Behavior of local() on array and hash elements is now well-defined
331
332       See "Temporary Values via local()" in perlsub.
333
334       "%!" is transparently tied to the Errno module
335
336       See perlvar, and Errno.
337
338       Pseudo-hashes are supported
339
340       See perlref.
341
342       "EXPR foreach EXPR" is supported
343
344       See perlsyn.
345
346       Keywords can be globally overridden
347
348       See perlsub.
349
350       $^E is meaningful on Win32
351
352       See perlvar.
353
354       "foreach (1..1000000)" optimized
355
356       "foreach (1..1000000)" is now optimized into a counting loop.  It does
357       not try to allocate a 1000000-size list anymore.
358
359       "Foo::" can be used as implicitly quoted package name
360
361       Barewords caused unintuitive behavior when a subroutine with the same
362       name as a package happened to be defined.  Thus, "new Foo @args", use
363       the result of the call to "Foo()" instead of "Foo" being treated as a
364       literal.  The recommended way to write barewords in the indirect object
365       slot is "new Foo:: @args".  Note that the method "new()" is called with
366       a first argument of "Foo", not "Foo::" when you do that.
367
368       "exists $Foo::{Bar::}" tests existence of a package
369
370       It was impossible to test for the existence of a package without actu‐
371       ally creating it before.  Now "exists $Foo::{Bar::}" can be used to
372       test if the "Foo::Bar" namespace has been created.
373
374       Better locale support
375
376       See perllocale.
377
378       Experimental support for 64-bit platforms
379
380       Perl5 has always had 64-bit support on systems with 64-bit longs.
381       Starting with 5.005, the beginnings of experimental support for systems
382       with 32-bit long and 64-bit 'long long' integers has been added.  If
383       you add -DUSE_LONG_LONG to your ccflags in config.sh (or manually
384       define it in perl.h) then perl will be built with 'long long' support.
385       There will be many compiler warnings, and the resultant perl may not
386       work on all systems.  There are many other issues related to third-
387       party extensions and libraries.  This option exists to allow people to
388       work on those issues.
389
390       prototype() returns useful results on builtins
391
392       See "prototype" in perlfunc.
393
394       Extended support for exception handling
395
396       "die()" now accepts a reference value, and $@ gets set to that value in
397       exception traps.  This makes it possible to propagate exception
398       objects.  This is an undocumented experimental feature.
399
400       Re-blessing in DESTROY() supported for chaining DESTROY() methods
401
402       See "Destructors" in perlobj.
403
404       All "printf" format conversions are handled internally
405
406       See "printf" in perlfunc.
407
408       New "INIT" keyword
409
410       "INIT" subs are like "BEGIN" and "END", but they get run just before
411       the perl runtime begins execution.  e.g., the Perl Compiler makes use
412       of "INIT" blocks to initialize and resolve pointers to XSUBs.
413
414       New "lock" keyword
415
416       The "lock" keyword is the fundamental synchronization primitive in
417       threaded perl.  When threads are not enabled, it is currently a noop.
418
419       To minimize impact on source compatibility this keyword is "weak",
420       i.e., any user-defined subroutine of the same name overrides it, unless
421       a "use Thread" has been seen.
422
423       New "qr//" operator
424
425       The "qr//" operator, which is syntactically similar to the other quote-
426       like operators, is used to create precompiled regular expressions.
427       This compiled form can now be explicitly passed around in variables,
428       and interpolated in other regular expressions.  See perlop.
429
430       "our" is now a reserved word
431
432       Calling a subroutine with the name "our" will now provoke a warning
433       when using the "-w" switch.
434
435       Tied arrays are now fully supported
436
437       See Tie::Array.
438
439       Tied handles support is better
440
441       Several missing hooks have been added.  There is also a new base class
442       for TIEARRAY implementations.  See Tie::Array.
443
444       4th argument to substr
445
446       substr() can now both return and replace in one operation.  The
447       optional 4th argument is the replacement string.  See "substr" in perl‐
448       func.
449
450       Negative LENGTH argument to splice
451
452       splice() with a negative LENGTH argument now work similar to what the
453       LENGTH did for substr().  Previously a negative LENGTH was treated as
454       0.  See "splice" in perlfunc.
455
456       Magic lvalues are now more magical
457
458       When you say something like "substr($x, 5) = "hi"", the scalar returned
459       by substr() is special, in that any modifications to it affect $x.
460       (This is called a 'magic lvalue' because an 'lvalue' is something on
461       the left side of an assignment.)  Normally, this is exactly what you
462       would expect to happen, but Perl uses the same magic if you use sub‐
463       str(), pos(), or vec() in a context where they might be modified, like
464       taking a reference with "\" or as an argument to a sub that modifies
465       @_.  In previous versions, this 'magic' only went one way, but now
466       changes to the scalar the magic refers to ($x in the above example)
467       affect the magic lvalue too. For instance, this code now acts differ‐
468       ently:
469
470           $x = "hello";
471           sub printit {
472               $x = "g'bye";
473               print $_[0], "\n";
474           }
475           printit(substr($x, 0, 5));
476
477       In previous versions, this would print "hello", but it now prints
478       "g'bye".
479
480       <> now reads in records
481
482       If $/ is a reference to an integer, or a scalar that holds an integer,
483       <> will read in records instead of lines. For more info, see "$/" in
484       perlvar.
485

Supported Platforms

487       Configure has many incremental improvements.  Site-wide policy for
488       building perl can now be made persistent, via Policy.sh.  Configure
489       also records the command-line arguments used in config.sh.
490
491       New Platforms
492
493       BeOS is now supported.  See README.beos.
494
495       DOS is now supported under the DJGPP tools.  See README.dos (installed
496       as perldos on some systems).
497
498       MiNT is now supported.  See README.mint.
499
500       MPE/iX is now supported.  See README.mpeix.
501
502       MVS (aka OS390, aka Open Edition) is now supported.  See README.os390
503       (installed as perlos390 on some systems).
504
505       Stratus VOS is now supported.  See README.vos.
506
507       Changes in existing support
508
509       Win32 support has been vastly enhanced.  Support for Perl Object, a C++
510       encapsulation of Perl.  GCC and EGCS are now supported on Win32.  See
511       README.win32, aka perlwin32.
512
513       VMS configuration system has been rewritten.  See README.vms (installed
514       as README_vms on some systems).
515
516       The hints files for most Unix platforms have seen incremental improve‐
517       ments.
518

Modules and Pragmata

520       New Modules
521
522       B   Perl compiler and tools.  See B.
523
524       Data::Dumper
525           A module to pretty print Perl data.  See Data::Dumper.
526
527       Dumpvalue
528           A module to dump perl values to the screen. See Dumpvalue.
529
530       Errno
531           A module to look up errors more conveniently.  See Errno.
532
533       File::Spec
534           A portable API for file operations.
535
536       ExtUtils::Installed
537           Query and manage installed modules.
538
539       ExtUtils::Packlist
540           Manipulate .packlist files.
541
542       Fatal
543           Make functions/builtins succeed or die.
544
545       IPC::SysV
546           Constants and other support infrastructure for System V IPC opera‐
547           tions in perl.
548
549       Test
550           A framework for writing testsuites.
551
552       Tie::Array
553           Base class for tied arrays.
554
555       Tie::Handle
556           Base class for tied handles.
557
558       Thread
559           Perl thread creation, manipulation, and support.
560
561       attrs
562           Set subroutine attributes.
563
564       fields
565           Compile-time class fields.
566
567       re  Various pragmata to control behavior of regular expressions.
568
569       Changes in existing modules
570
571       Benchmark
572           You can now run tests for x seconds instead of guessing the right
573           number of tests to run.
574
575           Keeps better time.
576
577       Carp
578           Carp has a new function cluck(). cluck() warns, like carp(), but
579           also adds a stack backtrace to the error message, like confess().
580
581       CGI CGI has been updated to version 2.42.
582
583       Fcntl
584           More Fcntl constants added: F_SETLK64, F_SETLKW64, O_LARGEFILE for
585           large (more than 4G) file access (the 64-bit support is not yet
586           working, though, so no need to get overly excited), Free/Net/Open‐
587           BSD locking behaviour flags F_FLOCK, F_POSIX, Linux F_SHLCK, and
588           O_ACCMODE: the mask of O_RDONLY, O_WRONLY, and O_RDWR.
589
590       Math::Complex
591           The accessors methods Re, Im, arg, abs, rho, theta, methods can
592           ($z->Re()) now also act as mutators ($z->Re(3)).
593
594       Math::Trig
595           A little bit of radial trigonometry (cylindrical and spherical)
596           added, for example the great circle distance.
597
598       POSIX
599           POSIX now has its own platform-specific hints files.
600
601       DB_File
602           DB_File supports version 2.x of Berkeley DB.  See
603           "ext/DB_File/Changes".
604
605       MakeMaker
606           MakeMaker now supports writing empty makefiles, provides a way to
607           specify that site umask() policy should be honored.  There is also
608           better support for manipulation of .packlist files, and getting
609           information about installed modules.
610
611           Extensions that have both architecture-dependent and architecture-
612           independent files are now always installed completely in the archi‐
613           tecture-dependent locations.  Previously, the shareable parts were
614           shared both across architectures and across perl versions and were
615           therefore liable to be overwritten with newer versions that might
616           have subtle incompatibilities.
617
618       CPAN
619           See perlmodinstall and CPAN.
620
621       Cwd Cwd::cwd is faster on most platforms.
622

Utility Changes

624       "h2ph" and related utilities have been vastly overhauled.
625
626       "perlcc", a new experimental front end for the compiler is available.
627
628       The crude GNU "configure" emulator is now called "configure.gnu" to
629       avoid trampling on "Configure" under case-insensitive filesystems.
630
631       "perldoc" used to be rather slow.  The slower features are now
632       optional.  In particular, case-insensitive searches need the "-i"
633       switch, and recursive searches need "-r".  You can set these switches
634       in the "PERLDOC" environment variable to get the old behavior.
635

Documentation Changes

637       Config.pm now has a glossary of variables.
638
639       Porting/patching.pod has detailed instructions on how to create and
640       submit patches for perl.
641
642       perlport specifies guidelines on how to write portably.
643
644       perlmodinstall describes how to fetch and install modules from "CPAN"
645       sites.
646
647       Some more Perl traps are documented now.  See perltrap.
648
649       perlopentut gives a tutorial on using open().
650
651       perlreftut gives a tutorial on references.
652
653       perlthrtut gives a tutorial on threads.
654

New Diagnostics

656       Ambiguous call resolved as CORE::%s(), qualify as such or use &
657           (W) A subroutine you have declared has the same name as a Perl key‐
658           word, and you have used the name without qualification for calling
659           one or the other.  Perl decided to call the builtin because the
660           subroutine is not imported.
661
662           To force interpretation as a subroutine call, either put an amper‐
663           sand before the subroutine name, or qualify the name with its pack‐
664           age.  Alternatively, you can import the subroutine (or pretend that
665           it's imported with the "use subs" pragma).
666
667           To silently interpret it as the Perl operator, use the "CORE::"
668           prefix on the operator (e.g. "CORE::log($x)") or by declaring the
669           subroutine to be an object method (see attrs).
670
671       Bad index while coercing array into hash
672           (F) The index looked up in the hash found as the 0'th element of a
673           pseudo-hash is not legal.  Index values must be at 1 or greater.
674           See perlref.
675
676       Bareword "%s" refers to nonexistent package
677           (W) You used a qualified bareword of the form "Foo::", but the com‐
678           piler saw no other uses of that namespace before that point.  Per‐
679           haps you need to predeclare a package?
680
681       Can't call method "%s" on an undefined value
682           (F) You used the syntax of a method call, but the slot filled by
683           the object reference or package name contains an undefined value.
684           Something like this will reproduce the error:
685
686               $BADREF = 42;
687               process $BADREF 1,2,3;
688               $BADREF->process(1,2,3);
689
690       Can't check filesystem of script "%s" for nosuid
691           (P) For some reason you can't check the filesystem of the script
692           for nosuid.
693
694       Can't coerce array into hash
695           (F) You used an array where a hash was expected, but the array has
696           no information on how to map from keys to array indices.  You can
697           do that only with arrays that have a hash reference at index 0.
698
699       Can't goto subroutine from an eval-string
700           (F) The "goto subroutine" call can't be used to jump out of an eval
701           "string".  (You can use it to jump out of an eval {BLOCK}, but you
702           probably don't want to.)
703
704       Can't localize pseudo-hash element
705           (F) You said something like "local $ar->{'key'}", where $ar is a
706           reference to a pseudo-hash.  That hasn't been implemented yet, but
707           you can get a similar effect by localizing the corresponding array
708           element directly -- "local $ar->[$ar->[0]{'key'}]".
709
710       Can't use %%! because Errno.pm is not available
711           (F) The first time the %! hash is used, perl automatically loads
712           the Errno.pm module. The Errno module is expected to tie the %!
713           hash to provide symbolic names for $! errno values.
714
715       Cannot find an opnumber for "%s"
716           (F) A string of a form "CORE::word" was given to prototype(), but
717           there is no builtin with the name "word".
718
719       Character class syntax [. .] is reserved for future extensions
720           (W) Within regular expression character classes ([]) the syntax
721           beginning with "[." and ending with ".]" is reserved for future
722           extensions.  If you need to represent those character sequences
723           inside a regular expression character class, just quote the square
724           brackets with the backslash: "\[." and ".\]".
725
726       Character class syntax [: :] is reserved for future extensions
727           (W) Within regular expression character classes ([]) the syntax
728           beginning with "[:" and ending with ":]" is reserved for future
729           extensions.  If you need to represent those character sequences
730           inside a regular expression character class, just quote the square
731           brackets with the backslash: "\[:" and ":\]".
732
733       Character class syntax [= =] is reserved for future extensions
734           (W) Within regular expression character classes ([]) the syntax
735           beginning with "[=" and ending with "=]" is reserved for future
736           extensions.  If you need to represent those character sequences
737           inside a regular expression character class, just quote the square
738           brackets with the backslash: "\[=" and "=\]".
739
740       %s: Eval-group in insecure regular expression
741           (F) Perl detected tainted data when trying to compile a regular
742           expression that contains the "(?{ ... })" zero-width assertion,
743           which is unsafe.  See "(?{ code })" in perlre, and perlsec.
744
745       %s: Eval-group not allowed, use re 'eval'
746           (F) A regular expression contained the "(?{ ... })" zero-width
747           assertion, but that construct is only allowed when the "use re
748           'eval'" pragma is in effect.  See "(?{ code })" in perlre.
749
750       %s: Eval-group not allowed at run time
751           (F) Perl tried to compile a regular expression containing the "(?{
752           ... })" zero-width assertion at run time, as it would when the pat‐
753           tern contains interpolated values.  Since that is a security risk,
754           it is not allowed.  If you insist, you may still do this by explic‐
755           itly building the pattern from an interpolated string at run time
756           and using that in an eval().  See "(?{ code })" in perlre.
757
758       Explicit blessing to '' (assuming package main)
759           (W) You are blessing a reference to a zero length string.  This has
760           the effect of blessing the reference into the package main.  This
761           is usually not what you want.  Consider providing a default target
762           package, e.g. bless($ref, $p ⎪⎪ 'MyPackage');
763
764       Illegal hex digit ignored
765           (W) You may have tried to use a character other than 0 - 9 or A - F
766           in a hexadecimal number.  Interpretation of the hexadecimal number
767           stopped before the illegal character.
768
769       No such array field
770           (F) You tried to access an array as a hash, but the field name used
771           is not defined.  The hash at index 0 should map all valid field
772           names to array indices for that to work.
773
774       No such field "%s" in variable %s of type %s
775           (F) You tried to access a field of a typed variable where the type
776           does not know about the field name.  The field names are looked up
777           in the %FIELDS hash in the type package at compile time.  The
778           %FIELDS hash is usually set up with the 'fields' pragma.
779
780       Out of memory during ridiculously large request
781           (F) You can't allocate more than 2^31+"small amount" bytes.  This
782           error is most likely to be caused by a typo in the Perl program.
783           e.g., $arr[time] instead of $arr[$time].
784
785       Range iterator outside integer range
786           (F) One (or both) of the numeric arguments to the range operator
787           ".."  are outside the range which can be represented by integers
788           internally.  One possible workaround is to force Perl to use magi‐
789           cal string increment by prepending "0" to your numbers.
790
791       Recursive inheritance detected while looking for method '%s' %s
792           (F) More than 100 levels of inheritance were encountered while
793           invoking a method.  Probably indicates an unintended loop in your
794           inheritance hierarchy.
795
796       Reference found where even-sized list expected
797           (W) You gave a single reference where Perl was expecting a list
798           with an even number of elements (for assignment to a hash). This
799           usually means that you used the anon hash constructor when you
800           meant to use parens. In any case, a hash requires key/value pairs.
801
802               %hash = { one => 1, two => 2, };   # WRONG
803               %hash = [ qw/ an anon array / ];   # WRONG
804               %hash = ( one => 1, two => 2, );   # right
805               %hash = qw( one 1 two 2 );                 # also fine
806
807       Undefined value assigned to typeglob
808           (W) An undefined value was assigned to a typeglob, a la "*foo =
809           undef".  This does nothing.  It's possible that you really mean
810           "undef *foo".
811
812       Use of reserved word "%s" is deprecated
813           (D) The indicated bareword is a reserved word.  Future versions of
814           perl may use it as a keyword, so you're better off either explic‐
815           itly quoting the word in a manner appropriate for its context of
816           use, or using a different name altogether.  The warning can be sup‐
817           pressed for subroutine names by either adding a "&" prefix, or
818           using a package qualifier, e.g. "&our()", or "Foo::our()".
819
820       perl: warning: Setting locale failed.
821           (S) The whole warning message will look something like:
822
823                  perl: warning: Setting locale failed.
824                  perl: warning: Please check that your locale settings:
825                          LC_ALL = "En_US",
826                          LANG = (unset)
827                      are supported and installed on your system.
828                  perl: warning: Falling back to the standard locale ("C").
829
830           Exactly what were the failed locale settings varies.  In the above
831           the settings were that the LC_ALL was "En_US" and the LANG had no
832           value.  This error means that Perl detected that you and/or your
833           system administrator have set up the so-called variable system but
834           Perl could not use those settings.  This was not dead serious, for‐
835           tunately: there is a "default locale" called "C" that Perl can and
836           will use, the script will be run.  Before you really fix the prob‐
837           lem, however, you will get the same error message each time you run
838           Perl.  How to really fix the problem can be found in "LOCALE PROB‐
839           LEMS" in perllocale.
840

Obsolete Diagnostics

842       Can't mktemp()
843           (F) The mktemp() routine failed for some reason while trying to
844           process a -e switch.  Maybe your /tmp partition is full, or clob‐
845           bered.
846
847           Removed because -e doesn't use temporary files any more.
848
849       Can't write to temp file for -e: %s
850           (F) The write routine failed for some reason while trying to
851           process a -e switch.  Maybe your /tmp partition is full, or clob‐
852           bered.
853
854           Removed because -e doesn't use temporary files any more.
855
856       Cannot open temporary file
857           (F) The create routine failed for some reason while trying to
858           process a -e switch.  Maybe your /tmp partition is full, or clob‐
859           bered.
860
861           Removed because -e doesn't use temporary files any more.
862
863       regexp too big
864           (F) The current implementation of regular expressions uses shorts
865           as address offsets within a string.  Unfortunately this means that
866           if the regular expression compiles to longer than 32767, it'll blow
867           up.  Usually when you want a regular expression this big, there is
868           a better way to do it with multiple statements.  See perlre.
869

Configuration Changes

871       You can use "Configure -Uinstallusrbinperl" which causes installperl to
872       skip installing perl also as /usr/bin/perl.  This is useful if you pre‐
873       fer not to modify /usr/bin for some reason or another but harmful
874       because many scripts assume to find Perl in /usr/bin/perl.
875

BUGS

877       If you find what you think is a bug, you might check the headers of
878       recently posted articles in the comp.lang.perl.misc newsgroup.  There
879       may also be information at http://www.perl.com/perl/ , the Perl Home
880       Page.
881
882       If you believe you have an unreported bug, please run the perlbug pro‐
883       gram included with your release.  Make sure you trim your bug down to a
884       tiny but sufficient test case.  Your bug report, along with the output
885       of "perl -V", will be sent off to <perlbug@perl.com> to be analysed by
886       the Perl porting team.
887

SEE ALSO

889       The Changes file for exhaustive details on what changed.
890
891       The INSTALL file for how to build Perl.
892
893       The README file for general stuff.
894
895       The Artistic and Copying files for copyright information.
896

HISTORY

898       Written by Gurusamy Sarathy <gsar@activestate.com>, with many contribu‐
899       tions from The Perl Porters.
900
901       Send omissions or corrections to <perlbug@perl.com>.
902
903
904
905perl v5.8.8                       2006-01-07                  PERL5005DELTA(1)
Impressum