X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperldelta.pod;h=b0d0b837f46e83002746d3885ac66e0c8320ec4d;hb=b0fffe302ebecea108e16fbf94d910405cdc8714;hp=2816665ceded63bf569670953c8e084d13568eb7;hpb=88c0f95826d6bf6e427f14d1450bb57c1126385b;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perldelta.pod b/pod/perldelta.pod index 2816665..b0d0b83 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -1,888 +1,146 @@ =head1 NAME -perldelta - what's new for perl5.005 +perldelta - what's new for perl5.006 (as of 5.005_54) =head1 DESCRIPTION -This document describes differences between the 5.004 release and this one. - -=head1 About the new versioning system - -Perl is now developed on two tracks: a maintenance track that makes -small, safe updates to released production versions with emphasis on -compatibility; and a development track that pursues more aggressive -evolution. Maintenance releases (which should be considered production -quality) have subversion numbers that run from C<1> to C<49>, and -development releases (which should be considered "alpha" quality) run -from C<50> to C<99>. - -Perl 5.005 is the combined product of the new dual-track development -scheme. +This document describes differences between the 5.005 release and this one. =head1 Incompatible Changes -=head2 WARNING: This version is not binary compatible with Perl 5.004. - -Starting with Perl 5.004_50 there were many deep and far-reaching changes -to the language internals. If you have dynamically loaded extensions -that you built under perl 5.003 or 5.004, you can continue to use them -with 5.004, but you will need to rebuild and reinstall those extensions -to use them 5.005. See L for detailed instructions on how to -upgrade. - -=head2 Default installation structure has changed - -The new Configure defaults are designed to allow a smooth upgrade from -5.004 to 5.005, but you should read L for a detailed -discussion of the changes in order to adapt them to your system. - -=head2 Perl Source Compatibility - -When none of the experimental features are enabled, there should be -very few user-visible Perl source compatibility issues. +=head2 Perl Source Incompatibilities -If threads are enabled, then some caveats apply. C<@_> and C<$_> become -lexical variables. The effect of this should be largely transparent to -the user, but there are some boundary conditions under which user will -need to be aware of the issues. For example, C results in -a "Can't localize lexical variable @_ ..." message. This may be enabled -in a future version. +None known at this time. -Some new keywords have been introduced. These are generally expected to -have very little impact on compatibility. See L keyword>, -L keyword>, and L operator>. - -Certain barewords are now reserved. Use of these will provoke a warning -if you have asked for them with the C<-w> switch. -See L is now a reserved word>. - -=head2 C Source Compatibility - -There have been a large number of changes in the internals to support -the new features in this release. +=head2 C Source Incompatibilities =over 4 -=item Core sources now require ANSI C compiler - -An ANSI C compiler is now B to build perl. See F. - -=item All Perl global variables must now be referenced with an explicit prefix - -All Perl global variables that are visible for use by extensions now -have a C prefix. New extensions should C refer to perl globals -by their unqualified names. To preserve sanity, we provide limited -backward compatibility for globals that are being widely used like -C and C (which should now be written as C, -C etc.) - -If you find that your XS extension does not compile anymore because a -perl global is not visible, try adding a C prefix to the global -and rebuild. - -It is strongly recommended that all functions in the Perl API that don't -begin with C be referenced with a C prefix. The bare function -names without the C prefix are supported with macros, but this -support may cease in a future release. +=item C -See L. +Release 5.005 grandfathered old global symbol names by providing preprocessor +macros for extension source compatibility. As of release 5.006, these +preprocessor definitions are not available by default. You need to explicitly +compile perl with C<-DPERL_POLLUTE> in order to get these definitions. -=item Enabling threads has source compatibility issues +=item C and C Issues -Perl built with threading enabled requires extensions to use the new -C macro to initialize the handle to access per-thread data. -If you see a compiler error that talks about the variable C not -being declared (when building a module that has XS code), you need -to add C at the beginning of the block that elicited the error. - -The API function C should be used instead of -directly accessing perl globals as C. The API call is -backward compatible with existing perls and provides source compatibility -with threading is enabled. - -See L. +The C global is now thread local, so a C declaration is needed +in the scope in which it appears. XSUBs should handle this automatically, +but if you have used C in support functions, you either need to +change the C to a local variable (which is recommended), or put in +a C. =back -=head2 Binary Compatibility - -This version is NOT binary compatible with older versions. All extensions -will need to be recompiled. Further binaries built with threads enabled -are incompatible with binaries built without. This should largely be -transparent to the user, as all binary incompatible configurations have -their own unique architecture name, and extension binaries get installed at -unique locations. This allows coexistence of several configurations in -the same directory hierarchy. See F. - -=head2 Security fixes may affect compatibility - -A few taint leaks and taint omissions have been corrected. This may lead -to "failure" of scripts that used to work with older versions. Compiling -with -DINCOMPLETE_TAINTS provides a perl with minimal amounts of changes -to the tainting behavior. But note that the resulting perl will have -known insecurities. - -Oneliners with the C<-e> switch do not create temporary files anymore. - -=head2 Relaxed new mandatory warnings introduced in 5.004 - -Many new warnings that were introduced in 5.004 have been made -optional. Some of these warnings are still present, but perl's new -features make them less often a problem. See L. +=head2 Binary Incompatibilities -=head2 Licensing - -Perl has a new Social Contract for contributors. See F. - -The license included in much of the Perl documentation has changed. -Most of the Perl documentation was previously under the implicit GNU -General Public License or the Artistic License (at the user's choice). -Now much of the documentation unambigously states the terms under which -it may be distributed. Those terms are in general much less restrictive -than the GNU GPL. See L and the individual perl man pages listed -therein. +This release is not binary compatible with the 5.005 release and its +maintenance versions. =head1 Core Changes +Binary numbers are now supported as literals, in s?printf formats, and +C: -=head2 Threads - -WARNING: Threading is considered an B feature. Details of the -implementation may change without notice. There are known limitations -and some bugs. These are expected to be fixed in future versions. - -See L. - -=head2 Compiler - -WARNING: The Compiler and related tools are considered B. -Features may change without notice, and there are known limitations -and bugs. Since the compiler is fully external to perl, the default -configuration will build and install it. - -The Compiler produces three different types of transformations of a -perl program. The C backend generates C code that captures perl's state -just before execution begins. It eliminates the compile-time overheads -of the regular perl interpreter, but the run-time performance remains -comparatively the same. The CC backend generates optimized C code -equivalent to the code path at run-time. The CC backend has greater -potential for big optimizations, but only a few optimizations are -implemented currently. The Bytecode backend generates a platform -independent bytecode representation of the interpreter's state -just before execution. Thus, the Bytecode back end also eliminates -much of the compilation overhead of the interpreter. + $answer = 0b101010; + printf "The answer is: %b\n", oct("0b101010"); -The compiler comes with several valuable utilities. +The length argument of C is now optional. -C is an experimental module to detect and warn about suspicious -code, especially the cases that the C<-w> switch does not detect. +Better 64-bit support -- but full support still a distant goal. One +must Configure with -Duse64bits to get Configure to probe for the +extent of 64-bit support. Depending on the platform (hints file) more +or less 64-awareness becomes available. As of 5.005_54 at least +somewhat 64-bit aware platforms are HP-UX 11 or better, Solaris 2.6 or +better, IRIX 6.2 or better. Naturally 64-bit platforms like Digital +UNIX and UNICOS also have 64-bit support. -C can be used to demystify perl code, and understand -how perl optimizes certain constructs. - -C generates cross reference reports of all definition and use -of variables, subroutines and formats in a program. - -C show the lexical variables used by a subroutine or file -at a glance. - -C is a simple frontend for compiling perl. +=head1 Supported Platforms -See C, L, and the respective compiler modules. +VM/ESA is now supported. -=head2 Regular Expressions +Siemens BS200 is now supported. -Perl's regular expression engine has been seriously overhauled, and -many new constructs are supported. Several bugs have been fixed. +The Mach CThreads (NeXTstep) are now supported by the Thread extension. -Here is an itemized summary: +=head1 New tests =over 4 -=item Many new and improved optimizations - -Changes in the RE engine: - - Unneeded nodes removed; - Substrings merged together; - New types of nodes to process (SUBEXPR)* and similar expressions - quickly, used if the SUBEXPR has no side effects and matches - strings of the same length; - Better optimizations by lookup for constant substrings; - Better search for constants substrings anchored by $ ; - -Changes in Perl code using RE engine: - - More optimizations to s/longer/short/; - study() was not working; - /blah/ may be optimized to an analogue of index() if $& $` $' not seen; - Unneeded copying of matched-against string removed; - Only matched part of the string is copying if $` $' were not seen; +=item op/io_const -=item Many bug fixes +IO constants (SEEK_*, _IO*). + +=item op/io_dir -Note that only the major bug fixes are listed here. See F for others. +Directory-related IO methods (new, read, close, rewind, tied delete). - Backtracking might not restore start of $3. - No feedback if max count for * or + on "complex" subexpression - was reached, similarly (but at compile time) for {3,34567} - Primitive restrictions on max count introduced to decrease a - possibility of a segfault; - (ZERO-LENGTH)* could segfault; - (ZERO-LENGTH)* was prohibited; - Long REs were not allowed; - /RE/g could skip matches at the same position after a - zero-length match; +=item op/io_multihomed -=item New regular expression constructs +INET sockets with multi-homed hosts. -The following new syntax elements are supported: +=item op/io_poll - (?<=RE) - (?RE) - \z +IO poll(). -=item New operator for precompiled regular expressions +=item op/io_unix -See L operator>. +UNIX sockets. -=item Other improvements +=item op/filetest - Better debugging output (possibly with colors), - even from non-debugging Perl; - RE engine code now looks like C, not like assembler; - Behaviour of RE modifiable by `use re' directive; - Improved documentation; - Test suite significantly extended; - Syntax [:^upper:] etc., reserved inside character classes; +File test operators. -=item Incompatible changes +=item op/lex_assign - (?i) localized inside enclosing group; - $( is not interpolated into RE any more; - /RE/g may match at the same position (with non-zero length) - after a zero-length match (bug fix). +Guard against lexicals leaking (internal stuff). =back -See L and L. - -=head2 Improved malloc() - -See banner at the beginning of C for details. - -=head2 Quicksort is internally implemented - -Perl now contains its own highly optimized qsort() routine. The new qsort() -is resistant to inconsistent comparison functions, so Perl's C will -not provoke coredumps any more when given poorly written sort subroutines. -(Some C library Cs that were being used before used to have this -problem.) In our testing, the new C required the minimal number -of pair-wise compares on average, among all known C implementations. - -See C. - -=head2 Reliable signals - -Perl's signal handling is susceptible to random crashes, because signals -arrive asynchronously, and the Perl runtime is not reentrant at arbitrary -times. - -However, one experimental implementation of reliable signals is available -when threads are enabled. See C. Also see F for -how to build a Perl capable of threads. - -=head2 Reliable stack pointers - -The internals now reallocate the perl stack only at predictable times. -In particular, magic calls never trigger reallocations of the stack, -because all reentrancy of the runtime is handled using a "stack of stacks". -This should improve reliability of cached stack pointers in the internals -and in XSUBs. - -=head2 More generous treatment of carriage returns - -Perl used to complain if it encountered literal carriage returns in -scripts. Now they are mostly treated like whitespace within program text. -Inside string literals and here documents, literal carriage returns are -ignored if they occur paired with newlines, or get interpreted as newlines -if they stand alone. This behavior means that literal carriage returns -in files should be avoided. You can get the older, more compatible (but -less generous) behavior by defining the preprocessor symbol -C when building perl. Of course, all this has nothing -whatever to do with how escapes like C<\r> are handled within strings. - -Note that this doesn't somehow magically allow you to keep all text files -in DOS format. The generous treatment only applies to files that perl -itself parses. If your C compiler doesn't allow carriage returns in -files, you may still be unable to build modules that need a C compiler. - -=head2 Memory leaks - -C, C and C don't leak memory anymore when used in lvalue -context. Many small leaks that impacted applications that embed multiple -interpreters have been fixed. - -=head2 Better support for multiple interpreters - -The build-time option C<-DMULTIPLICITY> has had many of the details -reworked. Some previously global variables that should have been -per-interpreter now are. With care, this allows interpreters to call -each other. See the C extension on CPAN. - -=head2 Behavior of local() on array and hash elements is now well-defined - -See L. - -=head2 C<%!> is transparently tied to the L module - -See L, and L. - -=head2 Pseudo-hashes are supported - -See L. - -=head2 C is supported - -See L. - -=head2 Keywords can be globally overridden - -See L. - -=head2 C<$^E> is meaningful on Win32 - -See L. - -=head2 C optimized - -C is now optimized into a counting loop. It does -not try to allocate a 1000000-size list anymore. - -=head2 C can be used as implicitly quoted package name - -Barewords caused unintuitive behavior when a subroutine with the same -name as a package happened to be defined. Thus, C, -use the result of the call to C instead of C being treated -as a literal. The recommended way to write barewords in the indirect -object slot is C. Note that the method C is -called with a first argument of C, not C when you do that. - -=head2 C tests existence of a package - -It was impossible to test for the existence of a package without -actually creating it before. Now C can be -used to test if the C namespace has been created. - -=head2 Better locale support - -See L. - -=head2 Experimental support for 64-bit platforms - -Perl5 has always had 64-bit support on systems with 64-bit longs. -Starting with 5.005, the beginnings of experimental support for systems -with 32-bit long and 64-bit 'long long' integers has been added. -If you add -DUSE_LONG_LONG to your ccflags in config.sh (or manually -define it in perl.h) then perl will be built with 'long long' support. -There will be many compiler warnings, and the resultant perl may not -work on all systems. There are many other issues related to -third-party extensions and libraries. This option exists to allow -people to work on those issues. - -=head2 prototype() returns useful results on builtins - -See L. - -=head2 Extended support for exception handling - -C now accepts a reference value, and C<$@> gets set to that -value in exception traps. This makes it possible to propagate -exception objects. This is an undocumented B feature. - -=head2 Re-blessing in DESTROY() supported for chaining DESTROY() methods - -See L. - -=head2 All C format conversions are handled internally - -See L. - -=head2 New C keyword - -C subs are like C and C, but they get run just before -the perl runtime begins execution. e.g., the Perl Compiler makes use of -C blocks to initialize and resolve pointers to XSUBs. - -=head2 New C keyword - -The C keyword is the fundamental synchronization primitive -in threaded perl. When threads are not enabled, it is currently a noop. - -To minimize impact on source compatibility this keyword is "weak", i.e., any -user-defined subroutine of the same name overrides it, unless a C -has been seen. - -=head2 New C operator - -The C operator, which is syntactically similar to the other quote-like -operators, is used to create precompiled regular expressions. This compiled -form can now be explicitly passed around in variables, and interpolated in -other regular expressions. See L. - -=head2 C is now a reserved word - -Calling a subroutine with the name C will now provoke a warning when -using the C<-w> switch. - -=head2 Tied arrays are now fully supported - -See L. - -=head2 Tied handles support is better - -Several missing hooks have been added. There is also a new base class for -TIEARRAY implementations. See L. - -=head2 4th argument to substr - -substr() can now both return and replace in one operation. The optional -4th argument is the replacement string. See L. - -=head2 Negative LENGTH argument to splice - -splice() with a negative LENGTH argument now work similar to what the -LENGTH did for substr(). Previously a negative LENGTH was treated as -0. See L. - -=head2 Magic lvalues are now more magical - -When you say something like C, the scalar returned -by substr() is special, in that any modifications to it affect $x. -(This is called a 'magic lvalue' because an 'lvalue' is something on -the left side of an assignment.) Normally, this is exactly what you -would expect to happen, but Perl uses the same magic if you use substr(), -pos(), or vec() in a context where they might be modified, like taking -a reference with C<\> or as an argument to a sub that modifies C<@_>. -In previous versions, this 'magic' only went one way, but now changes -to the scalar the magic refers to ($x in the above example) affect the -magic lvalue too. For instance, this code now acts differently: - - $x = "hello"; - sub printit { - $x = "g'bye"; - print $_[0], "\n"; - } - printit(substr($x, 0, 5)); - -In previous versions, this would print "hello", but it now prints "g'bye". - -=head2 EE now reads in records - -If C<$/> is a referenence to an integer, or a scalar that holds an integer, -EE will read in records instead of lines. For more info, see -L. - -=head1 Supported Platforms - -Configure has many incremental improvements. Site-wide policy for building -perl can now be made persistent, via Policy.sh. Configure also records -the command-line arguments used in F. - -=head2 New Platforms - -BeOS is now supported. See L. - -DOS is now supported under the DJGPP tools. See L. - -MPE/iX is now supported. See L. - -=head2 Changes in existing support - -Win32 support has been vastly enhanced. Support for Perl Object, a C++ -encapsulation of Perl. GCC and EGCS are now supported on Win32. -See F, aka L. - -VMS configuration system has been rewritten. See L. - -The hints files for most Unix platforms have seen incremental improvements. - =head1 Modules and Pragmata -=head2 New Modules +=head2 Modules -=over +Dumpvalue module provides screen dumps of Perl data. -=item B +=head2 Pragmata -Perl compiler and tools. See L. +Lexical warnings pragma, "use warning;", to control optional warnings. -=item Data::Dumper +Filetest pragma, to control the behaviour of filetests (C<-r> C<-w> ...). +Currently only one subpragma implemented, "use filetest 'access';", +that enables the use of access(2) or equivalent to check the +permissions instead of using stat(2) as usual. This matters +in filesystems where there are ACLs (access control lists), the +stat(2) might lie, while access(2) knows better. -A module to pretty print Perl data. See L. - -=item Errno - -A module to look up errors more conveniently. See L. - -=item File::Spec - -A portable API for file operations. - -=item ExtUtils::Installed - -Query and manage installed modules. - -=item ExtUtils::Packlist - -Manipulate .packlist files. - -=item Fatal - -Make functions/builtins succeed or die. - -=item IPC::SysV - -Constants and other support infrastructure for System V IPC operations -in perl. - -=item Test - -A framework for writing testsuites. - -=item Tie::Array - -Base class for tied arrays. - -=item Tie::Handle - -Base class for tied handles. - -=item Thread - -Perl thread creation, manipulation, and support. - -=item attrs - -Set subroutine attributes. - -=item fields - -Compile-time class fields. - -=item re - -Various pragmata to control behavior of regular expressions. - -=back - -=head2 Changes in existing modules - -=over - -=item CGI - -CGI has been updated to version 2.42. - -=item POSIX - -POSIX now has its own platform-specific hints files. - -=item DB_File - -DB_File supports version 2.x of Berkeley DB. See C. - -=item MakeMaker - -MakeMaker now supports writing empty makefiles, provides a way to -specify that site umask() policy should be honored. There is also -better support for manipulation of .packlist files, and getting -information about installed modules. - -Extensions that have both architecture-dependent and -architecture-independent files are now always installed completely in -the architecture-dependent locations. Previously, the shareable parts -were shared both across architectures and across perl versions and were -therefore liable to be overwritten with newer versions that might have -subtle incompatibilities. - -=item CPAN - -See and L. - -=item Cwd - -Cwd::cwd is faster on most platforms. - -=item Benchmark - -Keeps better time. - -=back +Todo. =head1 Utility Changes -C and related utilities have been vastly overhauled. - -C, a new experimental front end for the compiler is available. - -The crude GNU C emulator is now called C to -avoid trampling on C under case-insensitive filesystems. - -C used to be rather slow. The slower features are now optional. -In particular, case-insensitive searches need the C<-i> switch, and -recursive searches need C<-r>. You can set these switches in the -C environment variable to get the old behavior. +Todo. =head1 Documentation Changes -Config.pm now has a glossary of variables. - -F has detailed instructions on how to create and -submit patches for perl. - -L specifies guidelines on how to write portably. - -L describes how to fetch and install modules from C -sites. - -Some more Perl traps are documented now. See L. +Todo. =head1 New Diagnostics -=over - -=item Ambiguous call resolved as CORE::%s(), qualify as such or use & - -(W) A subroutine you have declared has the same name as a Perl keyword, -and you have used the name without qualification for calling one or the -other. Perl decided to call the builtin because the subroutine is -not imported. - -To force interpretation as a subroutine call, either put an ampersand -before the subroutine name, or qualify the name with its package. -Alternatively, you can import the subroutine (or pretend that it's -imported with the C pragma). - -To silently interpret it as the Perl operator, use the C prefix -on the operator (e.g. C) or by declaring the subroutine -to be an object method (see L). - -=item Bad index while coercing array into hash - -(F) The index looked up in the hash found as the 0'th element of a -pseudo-hash is not legal. Index values must be at 1 or greater. -See L. +=item /%s/: Unrecognized escape \\%c passed through -=item Bareword "%s" refers to nonexistent package +(W) You used a backslash-character combination which is not recognized +by Perl. This combination appears in an interpolated variable or a +C<'>-delimited regular expression. -(W) You used a qualified bareword of the form C, but -the compiler saw no other uses of that namespace before that point. -Perhaps you need to predeclare a package? - -=item Can't call method "%s" on an undefined value - -(F) You used the syntax of a method call, but the slot filled by the -object reference or package name contains an undefined value. -Something like this will reproduce the error: - - $BADREF = 42; - process $BADREF 1,2,3; - $BADREF->process(1,2,3); - -=item Can't coerce array into hash - -(F) You used an array where a hash was expected, but the array has no -information on how to map from keys to array indices. You can do that -only with arrays that have a hash reference at index 0. - -=item Can't goto subroutine from an eval-string - -(F) The "goto subroutine" call can't be used to jump out of an eval "string". -(You can use it to jump out of an eval {BLOCK}, but you probably don't want to.) - -=item Can't localize pseudo-hash element - -(F) You said something like C{'key'}>, where $ar is -a reference to a pseudo-hash. That hasn't been implemented yet, but -you can get a similar effect by localizing the corresponding array -element directly -- C[$ar-E[0]{'key'}]>. - -=item Can't use %%! because Errno.pm is not available - -(F) The first time the %! hash is used, perl automatically loads the -Errno.pm module. The Errno module is expected to tie the %! hash to -provide symbolic names for C<$!> errno values. - -=item Cannot find an opnumber for "%s" - -(F) A string of a form C was given to prototype(), but -there is no builtin with the name C. - -=item Character class syntax [. .] is reserved for future extensions - -(W) Within regular expression character classes ([]) the syntax beginning -with "[." and ending with ".]" is reserved for future extensions. -If you need to represent those character sequences inside a regular -expression character class, just quote the square brackets with the -backslash: "\[." and ".\]". - -=item Character class syntax [: :] is reserved for future extensions - -(W) Within regular expression character classes ([]) the syntax beginning -with "[:" and ending with ":]" is reserved for future extensions. -If you need to represent those character sequences inside a regular -expression character class, just quote the square brackets with the -backslash: "\[:" and ":\]". - -=item Character class syntax [= =] is reserved for future extensions - -(W) Within regular expression character classes ([]) the syntax -beginning with "[=" and ending with "=]" is reserved for future extensions. -If you need to represent those character sequences inside a regular -expression character class, just quote the square brackets with the -backslash: "\[=" and "=\]". - -=item %s: Eval-group in insecure regular expression - -(F) Perl detected tainted data when trying to compile a regular expression -that contains the C<(?{ ... })> zero-width assertion, which is unsafe. -See L, and L. - -=item %s: Eval-group not allowed, use re 'eval' - -(F) A regular expression contained the C<(?{ ... })> zero-width assertion, -but that construct is only allowed when the C pragma is -in effect. See L. - -=item %s: Eval-group not allowed at run time - -(F) Perl tried to compile a regular expression containing the C<(?{ ... })> -zero-width assertion at run time, as it would when the pattern contains -interpolated values. Since that is a security risk, it is not allowed. -If you insist, you may still do this by explicitly building the pattern -from an interpolated string at run time and using that in an eval(). -See L. - -=item Explicit blessing to '' (assuming package main) - -(W) You are blessing a reference to a zero length string. This has -the effect of blessing the reference into the package main. This is -usually not what you want. Consider providing a default target -package, e.g. bless($ref, $p or 'MyPackage'); - -=item Illegal hex digit ignored - -(W) You may have tried to use a character other than 0 - 9 or A - F in a -hexadecimal number. Interpretation of the hexadecimal number stopped -before the illegal character. - -=item No such array field - -(F) You tried to access an array as a hash, but the field name used is -not defined. The hash at index 0 should map all valid field names to -array indices for that to work. - -=item No such field "%s" in variable %s of type %s - -(F) You tried to access a field of a typed variable where the type -does not know about the field name. The field names are looked up in -the %FIELDS hash in the type package at compile time. The %FIELDS hash -is usually set up with the 'fields' pragma. - -=item Out of memory during ridiculously large request - -(F) You can't allocate more than 2^31+"small amount" bytes. This error -is most likely to be caused by a typo in the Perl program. e.g., C<$arr[time]> -instead of C<$arr[$time]>. - -=item Range iterator outside integer range - -(F) One (or both) of the numeric arguments to the range operator ".." -are outside the range which can be represented by integers internally. -One possible workaround is to force Perl to use magical string -increment by prepending "0" to your numbers. - -=item Recursive inheritance detected while looking for method '%s' in package '%s' - -(F) More than 100 levels of inheritance were encountered while invoking a -method. Probably indicates an unintended loop in your inheritance hierarchy. - -=item Reference found where even-sized list expected - -(W) You gave a single reference where Perl was expecting a list with -an even number of elements (for assignment to a hash). This -usually means that you used the anon hash constructor when you meant -to use parens. In any case, a hash requires key/value B. - - %hash = { one => 1, two => 2, }; # WRONG - %hash = [ qw/ an anon array / ]; # WRONG - %hash = ( one => 1, two => 2, ); # right - %hash = qw( one 1 two 2 ); # also fine - -=item Undefined value assigned to typeglob - -(W) An undefined value was assigned to a typeglob, a la C<*foo = undef>. -This does nothing. It's possible that you really mean C. - -=item Use of reserved word "%s" is deprecated - -(D) The indicated bareword is a reserved word. Future versions of perl -may use it as a keyword, so you're better off either explicitly quoting -the word in a manner appropriate for its context of use, or using a -different name altogether. The warning can be suppressed for subroutine -names by either adding a C<&> prefix, or using a package qualifier, -e.g. C<&our()>, or C. - -=item perl: warning: Setting locale failed. - -(S) The whole warning message will look something like: - - perl: warning: Setting locale failed. - perl: warning: Please check that your locale settings: - LC_ALL = "En_US", - LANG = (unset) - are supported and installed on your system. - perl: warning: Falling back to the standard locale ("C"). - -Exactly what were the failed locale settings varies. In the above the -settings were that the LC_ALL was "En_US" and the LANG had no value. -This error means that Perl detected that you and/or your system -administrator have set up the so-called variable system but Perl could -not use those settings. This was not dead serious, fortunately: there -is a "default locale" called "C" that Perl can and will use, the -script will be run. Before you really fix the problem, however, you -will get the same error message each time you run Perl. How to really -fix the problem can be found in L section B. - -=back +=item Unrecognized escape \\%c passed through +(W) You used a backslash-character combination which is not recognized +by Perl. =head1 Obsolete Diagnostics -=over - -=item Can't mktemp() - -(F) The mktemp() routine failed for some reason while trying to process -a B<-e> switch. Maybe your /tmp partition is full, or clobbered. - -=item Can't write to temp file for B<-e>: %s - -(F) The write routine failed for some reason while trying to process -a B<-e> switch. Maybe your /tmp partition is full, or clobbered. - -=item Cannot open temporary file - -(F) The create routine failed for some reason while trying to process -a B<-e> switch. Maybe your /tmp partition is full, or clobbered. - -=back +Todo. =head1 BUGS