1PERL5005DELTA(1) Perl Programmers Reference Guide PERL5005DELTA(1)
2
3
4
6 perl5005delta - what's new for perl5.005
7
9 This document describes differences between the 5.004 release and this
10 one.
11
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
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
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
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
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
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
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
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
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
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
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
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
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)