📄 perl581delta.1
字号:
.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05).\".\" Standard preamble:.\" ========================================================================.de Sh \" Subsection heading.br.if t .Sp.ne 5.PP\fB\\$1\fR.PP...de Sp \" Vertical space (when we can't use .PP).if t .sp .5v.if n .sp...de Vb \" Begin verbatim text.ft CW.nf.ne \\$1...de Ve \" End verbatim text.ft R.fi...\" Set up some character translations and predefined strings. \*(-- will.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left.\" double quote, and \*(R" will give a right double quote. \*(C+ will.\" give a nicer C++. Capital omega is used to do unbreakable dashes and.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,.\" nothing in troff, for use with C<>..tr \(*W-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'.ie n \{\. ds -- \(*W-. ds PI pi. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch. ds L" "". ds R" "". ds C` "". ds C' ""'br\}.el\{\. ds -- \|\(em\|. ds PI \(*p. ds L" ``. ds R" '''br\}.\".\" Escape single quotes in literal strings from groff's Unicode transform..ie \n(.g .ds Aq \(aq.el .ds Aq '.\".\" If the F register is turned on, we'll generate index entries on stderr for.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index.\" entries marked with X<> in POD. Of course, you'll have to process the.\" output yourself in some meaningful fashion..ie \nF \{\. de IX. tm Index:\\$1\t\\n%\t"\\$2"... nr % 0. rr F.\}.el \{\. de IX...\}.\".\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2)..\" Fear. Run. Save yourself. No user-serviceable parts.. \" fudge factors for nroff and troff.if n \{\. ds #H 0. ds #V .8m. ds #F .3m. ds #[ \f1. ds #] \fP.\}.if t \{\. ds #H ((1u-(\\\\n(.fu%2u))*.13m). ds #V .6m. ds #F 0. ds #[ \&. ds #] \&.\}. \" simple accents for nroff and troff.if n \{\. ds ' \&. ds ` \&. ds ^ \&. ds , \&. ds ~ ~. ds /.\}.if t \{\. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u". ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'.\}. \" troff and (daisy-wheel) nroff accents.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'.ds 8 \h'\*(#H'\(*b\h'-\*(#H'.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#].ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#].ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#].ds ae a\h'-(\w'a'u*4/10)'e.ds Ae A\h'-(\w'A'u*4/10)'E. \" corrections for vroff.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'. \" for low resolution devices (crt and lpr).if \n(.H>23 .if \n(.V>19 \\{\. ds : e. ds 8 ss. ds o a. ds d- d\h'-1'\(ga. ds D- D\h'-1'\(hy. ds th \o'bp'. ds Th \o'LP'. ds ae ae. ds Ae AE.\}.rm #[ #] #H #V #F C.\" ========================================================================.\".IX Title "PERL581DELTA 1".TH PERL581DELTA 1 "2007-12-18" "perl v5.10.0" "Perl Programmers Reference Guide".\" For nroff, turn off justification. Always turn off hyphenation; it makes.\" way too many mistakes in technical documents..if n .ad l.nh.SH "NAME"perl581delta \- what is new for perl v5.8.1.SH "DESCRIPTION".IX Header "DESCRIPTION"This document describes differences between the 5.8.0 release andthe 5.8.1 release..PPIf you are upgrading from an earlier release such as 5.6.1, first readthe perl58delta, which describes differences between 5.6.0 and5.8.0..PPIn case you are wondering about 5.6.1, it was bug-fix-wise ratheridentical to the development release 5.7.1. Confused? This timelinehopefully helps a bit: it lists the new major releases, their maintenancereleases, and the development releases..PP.Vb 1\& New Maintenance Development\&\& 5.6.0 2000\-Mar\-22\& 5.7.0 2000\-Sep\-02\& 5.6.1 2001\-Apr\-08\& 5.7.1 2001\-Apr\-09\& 5.7.2 2001\-Jul\-13\& 5.7.3 2002\-Mar\-05\& 5.8.0 2002\-Jul\-18\& 5.8.1 2003\-Sep\-25.Ve.SH "Incompatible Changes".IX Header "Incompatible Changes".Sh "Hash Randomisation".IX Subsection "Hash Randomisation"Mainly due to security reasons, the \*(L"random ordering\*(R" of hasheshas been made even more random. Previously while the order of hashelements from \fIkeys()\fR, \fIvalues()\fR, and \fIeach()\fR was essentially random,it was still repeatable. Now, however, the order varies betweendifferent runs of Perl..PP\&\fBPerl has never guaranteed any ordering of the hash keys\fR, and theordering has already changed several times during the lifetime ofPerl 5. Also, the ordering of hash keys has always been, andcontinues to be, affected by the insertion order..PPThe added randomness may affect applications..PPOne possible scenario is when output of an application has includedhash data. For example, if you have used the Data::Dumper module todump data into different files, and then compared the files to seewhether the data has changed, now you will have false positives sincethe order in which hashes are dumped will vary. In general the cureis to sort the keys (or the values); in particular for Data::Dumper touse the \f(CW\*(C`Sortkeys\*(C'\fR option. If some particular order is reallyimportant, use tied hashes: for example the Tie::IxHash modulewhich by default preserves the order in which the hash elementswere added..PPMore subtle problem is reliance on the order of \*(L"global destruction\*(R".That is what happens at the end of execution: Perl destroys all datastructures, including user data. If your destructors (the \s-1DESTROY\s0subroutines) have assumed any particular ordering to the globaldestruction, there might be problems ahead. For example, in adestructor of one object you cannot assume that objects of any otherclass are still available, unless you hold a reference to them.If the environment variable \s-1PERL_DESTRUCT_LEVEL\s0 is set to a non-zerovalue, or if Perl is exiting a spawned thread, it will also destructthe ordinary references and the symbol tables that are no longer in use.You can't call a class method or an ordinary function on a class thathas been collected that way..PPThe hash randomisation is certain to reveal hidden assumptions aboutsome particular ordering of hash elements, and outright bugs: itrevealed a few bugs in the Perl core and core modules..PPTo disable the hash randomisation in runtime, set the environmentvariable \s-1PERL_HASH_SEED\s0 to 0 (zero) before running Perl (for moreinformation see \*(L"\s-1PERL_HASH_SEED\s0\*(R" in perlrun), or to disable the featurecompletely in compile time, compile with \f(CW\*(C`\-DNO_HASH_SEED\*(C'\fR (see \fI\s-1INSTALL\s0\fR)..PPSee \*(L"Algorithmic Complexity Attacks\*(R" in perlsec for the originalrationale behind this change..Sh "\s-1UTF\-8\s0 On Filehandles No Longer Activated By Locale".IX Subsection "UTF-8 On Filehandles No Longer Activated By Locale"In Perl 5.8.0 all filehandles, including the standard filehandles,were implicitly set to be in Unicode \s-1UTF\-8\s0 if the locale settingsindicated the use of \s-1UTF\-8\s0. This feature caused too many problems,so the feature was turned off and redesigned: see \*(L"Core Enhancements\*(R"..ie n .Sh "Single-number v\-strings are no longer v\-strings before ""=>""".el .Sh "Single-number v\-strings are no longer v\-strings before ``=>''".IX Subsection "Single-number v-strings are no longer v-strings before =>"The version strings or v\-strings (see \*(L"Version Strings\*(R" in perldata)feature introduced in Perl 5.6.0 has been a source of some confusion\*(--especially when the user did not want to use it, but Perl thought itknew better. Especially troublesome has been the feature that beforea \*(L"=>\*(R" a version string (a \*(L"v\*(R" followed by digits) has been interpretedas a v\-string instead of a string literal. In other words:.PP.Vb 1\& %h = ( v65 => 42 );.Ve.PPhas meant since Perl 5.6.0.PP.Vb 1\& %h = ( \*(AqA\*(Aq => 42 );.Ve.PP(at least in platforms of \s-1ASCII\s0 progeny) Perl 5.8.1 restores themore natural interpretation.PP.Vb 1\& %h = ( \*(Aqv65\*(Aq => 42 );.Ve.PPThe multi-number v\-strings like v65.66 and 65.66.67 still continue tobe v\-strings in Perl 5.8..Sh "(Win32) The \-C Switch Has Been Repurposed".IX Subsection "(Win32) The -C Switch Has Been Repurposed"The \-C switch has changed in an incompatible way. The old semanticsof this switch only made sense in Win32 and only in the \*(L"use utf8\*(R"universe in 5.6.x releases, and do not make sense for the Unicodeimplementation in 5.8.0. Since this switch could not have been usedby anyone, it has been repurposed. The behavior that this switchenabled in 5.6.x releases may be supported in a transparent,data-dependent fashion in a future release..PPFor the new life of this switch, see \*(L"\s-1UTF\-8\s0 no longer default under\&\s-1UTF\-8\s0 locales\*(R", and \*(L"\-C\*(R" in perlrun..Sh "(Win32) The /d Switch Of cmd.exe".IX Subsection "(Win32) The /d Switch Of cmd.exe"Perl 5.8.1 uses the /d switch when running the cmd.exe shellinternally for \fIsystem()\fR, backticks, and when opening pipes to externalprograms. The extra switch disables the execution of AutoRun commandsfrom the registry, which is generally considered undesirable whenrunning external programs. If you wish to retain compatibility withthe older behavior, set \s-1PERL5SHELL\s0 in your environment to \f(CW\*(C`cmd /x/c\*(C'\fR..SH "Core Enhancements".IX Header "Core Enhancements".Sh "\s-1UTF\-8\s0 no longer default under \s-1UTF\-8\s0 locales".IX Subsection "UTF-8 no longer default under UTF-8 locales"In Perl 5.8.0 many Unicode features were introduced. One of themwas found to be of more nuisance than benefit: the automagic(and silent) \*(L"UTF\-8\-ification\*(R" of filehandles, including thestandard filehandles, if the user's locale settings indicateduse of \s-1UTF\-8\s0..PPFor example, if you had \f(CW\*(C`en_US.UTF\-8\*(C'\fR as your locale, your \s-1STDIN\s0 and\&\s-1STDOUT\s0 were automatically \*(L"\s-1UTF\-8\s0\*(R", in other words an implicitbinmode(..., \*(L":utf8\*(R") was made. This meant that trying to print, say,\&\fIchr\fR\|(0xff), ended up printing the bytes 0xc3 0xbf. Hardly whatyou had in mind unless you were aware of this feature of Perl 5.8.0.The problem is that the vast majority of people weren't: for examplein RedHat releases 8 and 9 the \fBdefault\fR locale setting is \s-1UTF\-8\s0, soall RedHat users got \s-1UTF\-8\s0 filehandles, whether they wanted it or not.The pain was intensified by the Unicode implementation of Perl 5.8.0(still) having nasty bugs, especially related to the use of s/// andtr///. (Bugs that have been fixed in 5.8.1)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -