📄 perl581delta.1
字号:
.IP "Time::HiRes" 4.IX Item "Time::HiRes".PDUse of \fInanosleep()\fR, if available, allows mixing subsecond sleeps withalarms..IP "threads" 4.IX Item "threads"Several fixes, for example for \fIjoin()\fR problems and memoryleaks. In some platforms (like Linux) that use glibc the minimum memoryfootprint of one ithread has been reduced by several hundred kilobytes..IP "threads::shared" 4.IX Item "threads::shared"Many memory leaks have been fixed..IP "Unicode::Collate" 4.IX Item "Unicode::Collate".PD 0.IP "Unicode::Normalize" 4.IX Item "Unicode::Normalize".IP "Win32::GetFolderPath" 4.IX Item "Win32::GetFolderPath".IP "Win32::GetOSVersion" 4.IX Item "Win32::GetOSVersion".PDNow returns extra information..SH "Utility Changes".IX Header "Utility Changes"The \f(CW\*(C`h2xs\*(C'\fR utility now produces a more modern layout:\&\fIFoo\-Bar/lib/Foo/Bar.pm\fR instead of \fIFoo/Bar/Bar.pm\fR.Also, the boilerplate test is now called \fIt/Foo\-Bar.t\fRinstead of \fIt/1.t\fR..PPThe Perl debugger (\fIlib/perl5db.pl\fR) has now been extensivelydocumented and bugs found while documenting have been fixed..PP\&\f(CW\*(C`perldoc\*(C'\fR has been rewritten from scratch to be more robust andfeature rich..PP\&\f(CW\*(C`perlcc \-B\*(C'\fR works now at least somewhat better, while \f(CW\*(C`perlcc \-c\*(C'\fRis rather more broken. (The Perl compiler suite as a whole continuesto be experimental.).SH "New Documentation".IX Header "New Documentation"perl573delta has been added to list the differences between the(now quite obsolete) development releases 5.7.2 and 5.7.3..PPperl58delta has been added: it is the perldelta of 5.8.0, detailingthe differences between 5.6.0 and 5.8.0..PPperlartistic has been added: it is the Artistic License in pod format,making it easier for modules to refer to it..PPperlcheat has been added: it is a Perl cheat sheet..PPperlgpl has been added: it is the \s-1GNU\s0 General Public License in podformat, making it easier for modules to refer to it..PPperlmacosx has been added to tell about the installation and useof Perl in Mac \s-1OS\s0 X..PPperlos400 has been added to tell about the installation and useof Perl in \s-1OS/400\s0 \s-1PASE\s0..PPperlreref has been added: it is a regular expressions quick reference..SH "Installation and Configuration Improvements".IX Header "Installation and Configuration Improvements"The \s-1UNIX\s0 standard Perl location, \fI/usr/bin/perl\fR, is no longeroverwritten by default if it exists. This change was very prudentbecause so many \s-1UNIX\s0 vendors already provide a \fI/usr/bin/perl\fR,but simultaneously many system utilities may depend on thatexact version of Perl, so better not to overwrite it..PPOne can now specify installation directories for site and vendor manand \s-1HTML\s0 pages, and site and vendor scripts. See \fI\s-1INSTALL\s0\fR..PPOne can now specify a destination directory for Perl installationby specifying the \s-1DESTDIR\s0 variable for \f(CW\*(C`make install\*(C'\fR. (This featureis slightly different from the previous \f(CW\*(C`Configure \-Dinstallprefix=...\*(C'\fR.)See \fI\s-1INSTALL\s0\fR..PPgcc versions 3.x introduced a new warning that caused a lot of noiseduring Perl compilation: \f(CW\*(C`gcc \-Ialreadyknowndirectory (warning:changing search order)\*(C'\fR. This warning has now been avoided byConfigure weeding out such directories before the compilation..PPOne can now build subsets of Perl core modules by using theConfigure flags \f(CW\*(C`\-Dnoextensions=...\*(C'\fR and \f(CW\*(C`\-Donlyextensions=...\*(C'\fR,see \fI\s-1INSTALL\s0\fR..Sh "Platform-specific enhancements".IX Subsection "Platform-specific enhancements"In Cygwin Perl can now be built with threads (\f(CW\*(C`Configure \-Duseithreads\*(C'\fR).This works with both Cygwin 1.3.22 and Cygwin 1.5.3..PPIn newer FreeBSD releases Perl 5.8.0 compilation failed because oftrying to use \fImalloc.h\fR, which in FreeBSD is just a dummy file, anda fatal error to even try to use. Now \fImalloc.h\fR is not used..PPPerl is now known to build also in Hitachi HI-UXMPP..PPPerl is now known to build again in LynxOS..PPMac \s-1OS\s0 X now installs with Perl version number embedded ininstallation directory names for easier upgrading of user-compiledPerl, and the installation directories in general are more standard.In other words, the default installation no longer breaks theApple-provided Perl. On the other hand, with \f(CW\*(C`Configure \-Dprefix=/usr\*(C'\fRyou can now really replace the Apple-supplied Perl (\fBplease be careful\fR)..PPMac \s-1OS\s0 X now builds Perl statically by default. This change was donemainly for faster startup times. The Apple-provided Perl is stilldynamically linked and shared, and you can enable the sharedness foryour own Perl builds by \f(CW\*(C`Configure \-Duseshrplib\*(C'\fR..PPPerl has been ported to \s-1IBM\s0's \s-1OS/400\s0 \s-1PASE\s0 environment. The best wayto build a Perl for \s-1PASE\s0 is to use an \s-1AIX\s0 host as a cross-compilationenvironment. See \s-1README\s0.os400..PPYet another cross-compilation option has been added: now Perl buildson OpenZaurus, an Linux distribution based on Mandrake + Embedix forthe Sharp Zaurus \s-1PDA\s0. See the Cross/README file..PPTru64 when using gcc 3 drops the optimisation for \fItoke.c\fR to \f(CW\*(C`\-O2\*(C'\fRbecause of gigantic memory use with the default \f(CW\*(C`\-O3\*(C'\fR..PPTru64 can now build Perl with the newer Berkeley DBs..PPBuilding Perl on WinCE has been much enhanced, see \fI\s-1README\s0.ce\fRand \fI\s-1README\s0.perlce\fR..SH "Selected Bug Fixes".IX Header "Selected Bug Fixes".Sh "Closures, eval and lexicals".IX Subsection "Closures, eval and lexicals"There have been many fixes in the area of anonymous subs, lexicals andclosures. Although this means that Perl is now more \*(L"correct\*(R", it ispossible that some existing code will break that happens to rely onthe faulty behaviour. In practice this is unlikely unless your codecontains a very complex nesting of anonymous subs, evals and lexicals..Sh "Generic fixes".IX Subsection "Generic fixes"If an input filehandle is marked \f(CW\*(C`:utf8\*(C'\fR and Perl sees illegal \s-1UTF\-8\s0coming in when doing \f(CW\*(C`<FH>\*(C'\fR, if warnings are enabled a warning isimmediately given \- instead of being silent about it and Perl beingunhappy about the broken data later. (The \f(CW\*(C`:encoding(utf8)\*(C'\fR layeralso works the same way.).PPbinmode(\s-1SOCKET\s0, \*(L":utf8\*(R") only worked on the input side, not on theoutput side of the socket. Now it works both ways..PPFor threaded Perls certain system database functions like \fIgetpwent()\fRand \fIgetgrent()\fR now grow their result buffer dynamically, instead offailing. This means that at sites with lots of users and groups thefunctions no longer fail by returning only partial results..PPPerl 5.8.0 had accidentally broken the capability for usersto define their own uppercase<\->lowercase Unicode mappings(as advertised by the Camel). This feature has been fixed andis also documented better..PPIn 5.8.0 this.PP.Vb 1\& $some_unicode .= <FH>;.Ve.PPdidn't work correctly but instead corrupted the data. This has nowbeen fixed..PPTied methods like \s-1FETCH\s0 etc. may now safely access tied values, i.e.resulting in a recursive call to \s-1FETCH\s0 etc. Remember to break therecursion, though..PPAt startup Perl blocks the \s-1SIGFPE\s0 signal away since there isn't muchPerl can do about it. Previously this blocking was in effect also forprograms executed from within Perl. Now Perl restores the original\&\s-1SIGFPE\s0 handling routine, whatever it was, before running externalprograms..PPLinenumbers in Perl scripts may now be greater than 65536, or 2**16.(Perl scripts have always been able to be larger than that, it's justthat the linenumber for reported errors and warnings have \*(L"wrappedaround\*(R".) While scripts that large usually indicate a need to rethinkyour code a bit, such Perl scripts do exist, for example as resultsfrom generated code. Now linenumbers can go all the way to4294967296, or 2**32..Sh "Platform-specific fixes".IX Subsection "Platform-specific fixes"Linux.IP "\(bu" 4Setting \f(CW$0\fR works again (with certain limitations thatPerl cannot do much about: see \*(L"$0\*(R" in perlvar).PPHP-UX.IP "\(bu" 4Setting \f(CW$0\fR now works..PP\&\s-1VMS\s0.IP "\(bu" 4Configuration now tests for the presence of \f(CW\*(C`poll()\*(C'\fR, and IO::Pollnow uses the vendor-supplied function if detected..IP "\(bu" 4A rare access violation at Perl start-up could occur if the Perl image wasinstalled with privileges or if there was an identifier with thesubsystem attribute set in the process's rightslist. Either of thesecircumstances triggered tainting code that contained a pointer bug. The faulty pointer arithmetic has been fixed..IP "\(bu" 4The length limit on values (not keys) in the \f(CW%ENV\fR hash has been raisedfrom 255 bytes to 32640 bytes (except when the \s-1PERL_ENV_TABLES\s0 settingoverrides the default use of logical names for \f(CW%ENV\fR). If it isnecessary to access these long values from outside Perl, be aware thatthey are implemented using search list logical names that store thevalue in pieces, each 255\-byte piece (up to 128 of them) being anelement in the search list. When doing a lookup in \f(CW%ENV\fR from withinPerl, the elements are combined into a single value. The existingVMS-specific ability to access individual elements of a search listlogical name via the \f(CW$ENV\fR{'foo;N'} syntax (where N is the search listindex) is unimpaired..IP "\(bu" 4The piping implementation now uses local rather than global \s-1DCL\s0symbols for inter-process communication..IP "\(bu" 4File::Find could become confused when navigating to a relativedirectory whose name collided with a logical name. This problem hasbeen corrected by adding directory syntax to relative path names, thuspreventing logical name translation..PPWin32.IP "\(bu" 4A memory leak in the \fIfork()\fR emulation has been fixed..IP "\(bu" 4The return value of the \fIioctl()\fR built-in function was accidentallybroken in 5.8.0. This has been corrected..IP "\(bu" 4The internal message loop executed by perl during blocking operationssometimes interfered with messages that were external to Perl.This often resulted in blocking operations terminating prematurely orreturning incorrect results, when Perl was executing under environmentsthat could generate Windows messages. This has been corrected..IP "\(bu" 4Pipes and sockets are now automatically in binary mode..IP "\(bu" 4The four-argument form of \fIselect()\fR did not preserve $! (errno) properlywhen there were errors in the underlying call. This is now fixed..IP "\(bu" 4The \*(L"\s-1CR\s0 \s-1CR\s0 \s-1LF\s0\*(R" problem of has been fixed, binmode(\s-1FH\s0, \*(L":crlf\*(R")is now effectively a no-op..SH "New or Changed Diagnostics".IX Header "New or Changed Diagnostics"All the warnings related to \fIpack()\fR and \fIunpack()\fR were made moreinformative and consistent..ie n .Sh "Changed ""A thread exited while %d threads were running""".el .Sh "Changed ``A thread exited while \f(CW%d\fP threads were running''".IX Subsection "Changed A thread exited while %d threads were running"The old version.PP.Vb 1\& A thread exited while %d other threads were still running.Ve.PPwas misleading because the \*(L"other\*(R" included also the thread givingthe warning..ie n .Sh "Removed ""Attempt to clear a restricted hash""".el .Sh "Removed ``Attempt to clear a restricted hash''".IX Subsection "Removed Attempt to clear a restricted hash"It is not illegal to clear a restricted hash, so the warningwas removed..ie n .Sh "New ""Illegal declaration of anonymous subroutine""".el .Sh "New ``Illegal declaration of anonymous subroutine''".IX Subsection "New Illegal declaration of anonymous subroutine"You must specify the block of code for \f(CW\*(C`sub\*(C'\fR..ie n .Sh "Changed ""Invalid range ""%s"" in transliteration operator""".el .Sh "Changed ``Invalid range ''%s`` in transliteration operator''".IX Subsection "Changed Invalid range %s in transliteration operator"The old version.PP.Vb 1\& Invalid [] range "%s" in transliteration operator.Ve.PPwas simply wrong because there are no \*(L"[] ranges\*(R" in tr///..ie n .Sh "New ""Missing control char name in \ec""".el .Sh "New ``Missing control char name in \ec''".IX Subsection "New Missing control char name in c"Self-explanatory..ie n .Sh "New ""Newline in left-justified string for %s""".el .Sh "New ``Newline in left-justified string for \f(CW%s\fP''".IX Subsection "New Newline in left-justified string for %s"The padding spaces would appear after the newline, which isprobably not what you had in mind..ie n .Sh "New ""Possible precedence problem on bitwise %c operator""".el .Sh "New ``Possible precedence problem on bitwise \f(CW%c\fP operator''".IX Subsection "New Possible precedence problem on bitwise %c operator"If you think this.PP.Vb 1\& $x & $y == 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -