Ito ang command na perl5220delta na maaaring patakbuhin sa OnWorks na libreng hosting provider gamit ang isa sa aming maramihang libreng online na workstation gaya ng Ubuntu Online, Fedora Online, Windows online emulator o MAC OS online emulator
PROGRAMA:
NAME
perl5220delta - ano ang bago para sa perl v5.22.0
DESCRIPTION
Inilalarawan ng dokumentong ito ang mga pagkakaiba sa pagitan ng release na 5.20.0 at ng release na 5.22.0.
Kung nag-a-upgrade ka mula sa naunang release gaya ng 5.18.0, basahin muna ang perl5200delta,
na naglalarawan ng mga pagkakaiba sa pagitan ng 5.18.0 at 5.20.0.
Ubod Mga Pagpapahusay
bago bitwise operator
Isang bagong pang-eksperimentong pasilidad ang idinagdag na gumagawa ng apat na karaniwang bitwise na operator
("& | ^ ~") patuloy na tinatrato ang kanilang mga operand bilang mga numero, at nagpapakilala ng apat na bagong tuldok
mga operator ("&. |. ^. ~.") na patuloy na tinatrato ang kanilang mga operand bilang mga string. Pareho
nalalapat sa mga variant ng pagtatalaga ("&= |= ^= &.= |.= ^.=").
Para magamit ito, paganahin ang feature na "bitwise" at huwag paganahin ang mga babala na "experimental::bitwise".
kategorya. Tingnan ang "Bitwise String Operators" sa perlop para sa mga detalye. [perl #123466]
.
bago dobleng diyamante opereytor
Ang "<<>>" ay parang "<>" ngunit gumagamit ng tatlong-argumentong "bukas" upang buksan ang bawat file sa @ARGV. Ibig sabihin nito
na ang bawat elemento ng @ARGV ay ituturing bilang isang aktwal na pangalan ng file, at ang "|foo" ay hindi magiging
itinuturing bilang isang bukas na tubo.
bago "\b" hangganan in regular mga expression
"qr/\b{gcb}/"
Ang "gcb" ay nangangahulugang Grapheme Cluster Boundary. Ito ay isang Unicode property na nakakahanap ng
hangganan sa pagitan ng mga pagkakasunud-sunod ng mga character na mukhang isang solong karakter sa isang katutubong
tagapagsalita ng isang wika. Matagal nang may kakayahan si Perl na harapin ang mga ito sa pamamagitan ng "\X"
regular na pagkakasunud-sunod ng pagtakas. Ngayon, mayroong isang alternatibong paraan ng paghawak sa mga ito. Tingnan ang "\b{},
\b, \B{}, \B" sa perlrebackslash para sa mga detalye.
"qr/\b{wb}/"
Ang ibig sabihin ng "wb" ay Word Boundary. Isa itong Unicode property na nakakahanap ng hangganan sa pagitan
mga salita. Ito ay katulad ng plain na "\b" (walang braces) ngunit mas angkop para sa
natural na pagproseso ng wika. Alam nito, halimbawa, na ang mga kudlit ay maaaring mangyari sa
gitna ng mga salita. Tingnan ang "\b{}, \b, \B{}, \B" sa perlrebackslash para sa mga detalye.
"qr/\b{sb}/"
Ang "sb" ay nangangahulugang Hangganan ng Pangungusap. Ito ay isang pag-aari ng Unicode upang tumulong sa pag-parse ng natural
mga pangungusap sa wika. Tingnan ang "\b{}, \b, \B{}, \B" sa perlrebackslash para sa mga detalye.
Hindi Pagkuha regular pagpapahayag Bandila
Sinusuportahan na ngayon ng mga regular na expression ang isang flag na "/n" na hindi pinapagana ang pagkuha at pagpuno ng $1, $2,
atbp sa loob ng mga grupo:
"hello" =~ /(hi|hello)/n; # $1 ay hindi nakatakda
Katumbas ito ng paglalagay ng "?:" sa simula ng bawat grupong kumukuha.
Tingnan ang "n" sa perlre para sa higit pang impormasyon.
"gamitin re 'mahigpit'"
Inilalapat nito ang mas mahigpit na mga panuntunan sa syntax sa mga regular na pattern ng expression na pinagsama-sama sa loob nito
saklaw. Sana ay alertuhan ka nito sa mga typo at iba pang hindi sinasadyang pag-uugali na
Ang mga isyu sa backwards-compatibility ay pumipigil sa amin na mag-ulat sa normal na regular na expression
mga compilation. Dahil ang pag-uugali nito ay maaaring magbago sa hinaharap na mga release ng Perl
habang nakakakuha tayo ng karanasan, ang paggamit ng pragma na ito ay magdaragdag ng babala sa kategorya
"experimental::re_strict". Tingnan ang 'higpit' sa re.
Unicode 7.0 (may pagwawasto) is ngayon suportado
Para sa mga detalye sa kung ano ang nasa release na ito, tingnan
<http://www.unicode.org/versions/Unicode7.0.0/>. Ang bersyon ng Unicode 7.0 na darating
kasama ng Perl ang isang pagwawasto na may kinalaman sa paghubog ng glyph sa Arabic (tingnan
<http://www.unicode.org/errata/#current_errata>).
"gamitin lokal" maaari paghigpitan alin lokal mga kategorya ay apektado
Posible na ngayong magpasa ng parameter na "gumamit ng lokal" upang tukuyin ang isang subset ng lokal
mga kategorya na dapat magkaroon ng kamalayan sa lokal, na ang mga natitira ay hindi naaapektuhan. Tingnan ang "Ang "gamitin ang lokal"
pragma" sa perllocale para sa mga detalye.
Perl ngayon suporta POSIX 2008 lokal pera pagdaragdag
Sa mga platform na may kakayahang pangasiwaan ang POSIX.1-2008, ang hash ay ibinalik ni
Kasama sa "POSIX::localeconv()" ang mga international currency field na idinagdag ng bersyong iyon ng
ang pamantayan ng POSIX. Ito ay "int_n_cs_precedes", "int_n_sep_by_space",
"int_n_sign_posn", "int_p_cs_precedes", "int_p_sep_by_space", at "int_p_sign_posn".
Mas mabuti heuristics on mas matanda platform para pagtukoy lokal UTF-8ness
Sa mga platform na hindi nagpapatupad ng pamantayan ng C99 o ng pamantayan ng POSIX 2001,
ang pagtukoy kung ang kasalukuyang lokal ay UTF-8 o hindi ay depende sa heuristics. Ang mga ito ay
napabuti sa release na ito.
Pagbabawas sa pamamagitan ng sanggunian
Ang mga variable at subroutine ay maaari na ngayong i-alyas sa pamamagitan ng pagtatalaga sa isang reference:
\$c = \$d;
\&x = \&y;
Magagawa rin ang Aliasing sa pamamagitan ng paggamit ng backslash bago ang isang "foreach" iterator
variable; ito marahil ang pinakakapaki-pakinabang na idyoma na ibinibigay ng tampok na ito:
foreach \%hash (@array_of_hash_refs) { ... }
Ang tampok na ito ay pang-eksperimento at dapat na paganahin sa pamamagitan ng "gamitin ang tampok na 'refaliasing'". Ito ay
magbabala maliban kung ang kategorya ng mga babala na "eksperimento::refaliasing" ay hindi pinagana.
Tingnan ang "Pagtatalaga sa Mga Sanggunian" sa perlref
"prototype" sa hindi argumento
Ang "prototype()" na walang mga argumento ay naghihinuha na ngayon ng $_. [perl #123514]
.
bago ":const" subroutine katangian
Maaaring ilapat ang attribute na "const" sa isang hindi kilalang subroutine. Nagdudulot ito ng bagong sub sa
maisakatuparan kaagad kapag nalikha ang isa (ibig sabihin kapag ang "sub" na expression ay
nasuri). Ang halaga nito ay nakuha at ginagamit upang lumikha ng isang bagong pare-parehong subroutine iyon ay
ibinalik. Pang-eksperimento ang feature na ito. Tingnan ang "Constant Functions" sa perlsub.
"fileno" ngayon gumagana on direktoryo humahawak
Kapag ang may-katuturang suporta ay magagamit sa operating system, ang "fileno" builtin na ngayon
gumagana sa mga hawakan ng direktoryo, na nagbubunga ng pinagbabatayan na deskriptor ng file sa parehong paraan tulad ng para sa
filehandles. Sa mga operating system na walang ganoong suporta, "fileno" sa isang hawakan ng direktoryo
patuloy na ibinabalik ang hindi natukoy na halaga, tulad ng dati, ngunit nagtatakda din ng $! upang ipahiwatig na ang
ang operasyon ay hindi suportado.
Sa kasalukuyan, ito ay gumagamit ng alinman sa isang "dd_fd" na miyembro sa OS "DIR" na istraktura, o a dirfd(3)
function gaya ng tinukoy ng POSIX.1-2008.
listahan anyo of tubo buksan ipinatupad para Win32
Ang listahan ng form ng pipe:
buksan ang aking $fh, "-|", "program", @arguments;
ay ipinatupad na ngayon sa Win32. Ito ay may parehong mga limitasyon bilang "system LIST" sa Win32, dahil
ang Win32 API ay hindi tumatanggap ng mga argumento ng programa bilang isang listahan.
Trabaho sa listahan pag-uulit
"(...) x ..." ay maaari na ngayong gamitin sa loob ng isang listahan na nakatalaga sa, hangga't ang kaliwang kamay
side ay isang wastong halaga. Ito ay nagpapahintulot sa "(undef,undef,$foo) = that_function()" na maisulat
bilang "((undef)x2, $foo) = that_function()".
Kawalang-hanggan at NaN (hindi-isang-numero) pag-asikaso pinabuti
Ang mga halaga ng lumulutang na punto ay kayang hawakan ang mga espesyal na halaga na infinity, negatibong infinity, at
NaN (hindi-isang-numero). Ngayon ay mas matatag na nating kinikilala at pinalaganap ang halaga sa
computations, at sa output ay gawing normal ang mga ito sa mga string na "Inf", "-Inf", at "NaN".
Tingnan din ang mga pagpapahusay ng POSIX.
Lumulutang punto pag-parse ay naging pinabuti
Ang pag-parse at pag-print ng mga halaga ng floating point ay napabuti.
Bilang isang ganap na bagong feature, ang hexadecimal floating point literals (tulad ng "0x1.23p-4") ay
suportado na ngayon, at maaari silang maging output gamit ang "printf "%a"". Tingnan ang "Scalar value constructors"
sa perldata para sa higit pang mga detalye.
Pag-iimpake kawalang-hanggan or hindi-isang-numero sa a katangian is ngayon nakamamatay
Dati, kapag sinusubukang i-pack ang infinity o hindi-isang-numero sa isang (lagdaan) na character, gagawin ni Perl
magbabala, at ipinapalagay na sinubukan mong mag-empake ng 0xFF; kung ibinigay mo ito bilang argumento sa "chr", "U+FFFD"
ay ibinalik.
Ngunit ngayon, ang lahat ng naturang pagkilos ("pack", "chr", at "print '%c'") ay nagreresulta sa isang nakamamatay na error.
Pang-eksperimentong C Backtrack API
Sinusuportahan na ngayon ng Perl (sa pamamagitan ng C level API) ang pagkuha ng C level backtrace (katulad ng kung ano
mga simbolikong debugger tulad ng ginagawa ng gdb).
Ibinabalik ng backtrace ang stack trace ng mga C call frame, kasama ang mga pangalan ng simbolo
(mga pangalan ng function), ang mga pangalan ng bagay (tulad ng "perl"), at kung maaari, gayundin ang source code
mga lokasyon (file:line).
Ang mga sinusuportahang platform ay Linux at OS X (ang ilang *BSD ay maaaring gumana nang hindi bababa sa bahagyang, ngunit sila
hindi pa nasusubok).
Kailangang paganahin ang feature gamit ang "Configure -Dusecbacktrace".
Tingnan ang "C backtrace" sa perlhacktips para sa higit pang impormasyon.
Katiwasayan
Perl is ngayon naipon sa "-fstack-protector-strong" if magagamit
Ang Perl ay pinagsama-sama sa opsyon na anti-stack-smashing na "-fstack-protector" mula noong
5.10.1. Ginagamit na ngayon ng Perl ang mas bagong variant na tinatawag na "-fstack-protector-strong", kung available.
Ang Ligtas module maaari pumayag sa labas pakete sa be pinalitan
Kritikal na pag-aayos ng bug: maaaring mapalitan ang mga panlabas na pakete. Ang Safe ay na-patch na sa 2.38 hanggang
tugunan ito
Perl is ngayon palagi naipon sa "-D_FORTIFY_SOURCE=2" if magagamit
Ang 'code hardening' na opsyon na tinatawag na "_FORTIFY_SOURCE", na available sa gcc 4.*, ay palagi na ngayong
ginagamit para sa pag-compile ng Perl, kung magagamit.
Tandaan na ito ay hindi kinakailangang isang malaking hakbang dahil sa maraming mga platform ang hakbang ay mayroon na
kinuha ilang taon na ang nakalipas: maraming mga distribusyon ng Linux (tulad ng Fedora) ang gumagamit nito
opsyon para sa Perl, at ang OS X ay nagpatupad ng pareho sa loob ng maraming taon.
hindi kaayon Mga Pagbabago
Subroutine lagda inilipat bago mga katangian
Ang tampok na pang-eksperimentong sub signature, gaya ng ipinakilala sa 5.20, ay nag-parse ng mga lagda pagkatapos
mga katangian. Sa release na ito, kasunod ng feedback mula sa mga user ng pang-eksperimentong feature,
ang pagpoposisyon ay inilipat upang magkaroon ng mga lagda pagkatapos ng subroutine na pangalan (kung
anuman) at bago ang listahan ng katangian (kung mayroon man).
"&" at "\&" modelo tumatanggap lamang subs
Ang "&" prototype na character ay tumatanggap na lamang ng mga hindi kilalang sub ("sub {...}"), mga bagay
nagsisimula sa "\&", o isang tahasang "undef". Dati maling pinayagan din
mga sanggunian sa mga array, hash, at listahan. [perl #4539]
. [perl #4539]
. [perl #123062]
.
Bilang karagdagan, pinapayagan ng prototype na "\&" ang mga subroutine na tawag, samantalang pinapayagan lang nito ngayon
mga subroutine: &foo ay pinahihintulutan pa rin bilang argumento, habang ang "&foo()" at "foo()" ay hindi na
ay. [perl #77860] .
"gamitin encoding" is ngayon leksikal
Ang epekto ng encoding pragma ay limitado na ngayon sa leksikal na saklaw. Ang pragma na ito ay hindi na ginagamit,
ngunit pansamantala, maaari itong maapektuhan ng hindi nauugnay na mga module na kasama sa
parehong programa; inaayos iyon ng pagbabagong ito.
listahan hiwa bumabalik walang laman mga listahan
Ang mga hiwa ng listahan ay nagbabalik na ngayon ng isang walang laman na listahan kung ang orihinal na listahan ay walang laman (o kung mayroon
walang mga indeks). Dati, ang isang listahan ng slice ay magbabalik ng isang walang laman na listahan kung ang lahat ng mga indeks ay bumaba
sa labas ng orihinal na listahan; ngayon ay nagbabalik ito ng isang listahan ng mga "undef" na halaga sa kasong iyon. [perl
#114498] .
"\N{}" sa a pagkakasunud-sunod of maramihang mga puwang is ngayon a nakamamatay mali
Hal. "\N{TOO MANY SPACE}" o "\N{TRAILING SPACE }". Ito ay hindi na ginagamit mula noon
v5.18.
"gamitin UNIVERSAL '...'" is ngayon a nakamamatay mali
Ang pag-import ng mga function mula sa "UNIVERSAL" ay hindi na ginagamit mula noong v5.12, at ngayon ay nakamamatay
pagkakamali. "Gumamit ng UNIVERSAL" nang walang anumang mga argumento ay pinapayagan pa rin.
In double-quotish "\cX", X dapat ngayon be a nalilimbag ASCII katangian
Sa mga naunang release, ang hindi paggawa nito ay nagtaas ng babala sa paghinto sa paggamit.
Paghahati ang token "(?" at "(*" in regular mga expression is ngayon a nakamamatay pagtitipon error.
Ang mga ito ay hindi na ginagamit mula noong v5.18.
"qr/foo/x" ngayon binabalewala lahat Unicode huwaran puti puwang
Ang "/x" na regular na expression modifier ay nagbibigay-daan sa pattern na maglaman ng puting espasyo at
mga komento (na parehong binabalewala) para sa pinahusay na pagiging madaling mabasa. Hanggang ngayon, hindi lahat ng
ang mga white space na character na itinalaga ng Unicode para sa layuning ito ay pinangasiwaan. Ang
ang mga karagdagang kinikilala ngayon ay:
U+0085 NEXT LINE
U+200E LEFT-To-RIGHT MARK
U+200F KANAN-PAG-LIW NA MARK
U+2028 LINE SEPARATOR
U+2029 PARAGRAPH SEPARATOR
Ang paggamit ng mga character na ito na may "/x" sa labas ng mga klase ng character na naka-bracket at kapag hindi
na naunahan ng backslash ay nagtaas ng babala sa paghinto sa paggamit mula noong v5.18. Ngayon ay magiging sila
hindi pinansin
Komento linya sa loob ng "(?[ ])" ay ngayon natapos lamang by a "\n"
Ang "(?[ ])" ay isang pang-eksperimentong tampok, na ipinakilala sa v5.18. Ito ay gumagana na parang "/x" ay
palaging pinagana. Ngunit may pagkakaiba: mga linya ng komento (kasunod ng isang "#" na character)
ay winakasan ng anumang tumutugma sa "\R" na kinabibilangan ng lahat ng patayong whitespace, gaya ng
form ng mga feed. Para sa pagkakapare-pareho, ito ay binago na ngayon upang tumugma sa kung ano ang nagtatapos sa mga linya ng komento
sa labas ng "(?[ ])", ibig sabihin ay isang "\n" (kahit na nakatakas), na kapareho ng kung ano ang nagtatapos sa isang
heredoc string at mga format.
"(?[...])" operator ngayon sundin pamantayan Perl karapatan sa pangunguna
Ang pang-eksperimentong feature na ito ay nagbibigay-daan sa mga set operation sa mga pattern ng regular na expression. Bago ang
ito, ang intersection operator ay may parehong precedence gaya ng iba pang binary operator.
Ngayon ito ay may mas mataas na precedence. Ito ay maaaring humantong sa iba't ibang mga resulta kaysa sa umiiral na code
inaasahan (bagaman ang dokumentasyon ay palaging nakasaad na ang pagbabagong ito ay maaaring mangyari,
nagrerekomenda ng ganap na panaklong sa mga expression). Tingnan ang "Extended Bracketed Character
Mga klase" sa perlrecharclass.
Tinatanggal "%" at "@" on sumira at ayos pangalan is hindi mas mahaba pinahihintulutan
Hinahayaan ka ng talagang lumang Perl na alisin ang "@" sa mga pangalan ng array at ang "%" sa mga pangalan ng hash sa ilang
mga spot. Nagbigay ito ng babala sa paghinto sa paggamit mula noong Perl 5.000, at hindi na
pinahihintulutan.
"$!" teksto is ngayon in Ingles sa labas ang saklaw of "gamitin lokal"
Dati, ang teksto, hindi tulad ng halos lahat ng iba pa, ay palaging lumalabas batay sa kasalukuyang
pinagbabatayan na lokal ng programa. (Apektado rin sa ilang system ang "$^E".) Para sa mga programa
na hindi handang pangasiwaan ang mga pagkakaiba sa lokal, maaari itong maging sanhi ng basurang text
ipinapakita. Mas mainam na magpakita ng text na naisasalin sa pamamagitan ng ilang tool kaysa sa basura
teksto na mas mahirap malaman.
"$!" teksto habilin be bumalik in UTF-8 kailan angkop
Ang stringification ng $! at $^E ay magkakaroon ng UTF-8 flag na nakatakda kapag ang teksto ay aktwal na
hindi ASCII UTF-8. Ito ay magbibigay-daan sa mga program na naka-set up na maging locale-aware nang maayos
output ng mga mensahe sa katutubong wika ng gumagamit. Code na kailangang ipagpatuloy ang 5.20 at
ang naunang pag-uugali ay maaaring gawin ang stringification sa loob ng mga saklaw ng parehong "paggamit ng mga byte" at
"use locale ":messages"". Sa loob ng dalawang saklaw na ito, wala nang iba pang pagpapatakbo ng Perl
apektado ng lokal; $ lamang! at $^E stringification. Ang "bytes" pragma ay nagiging sanhi ng UTF-8
flag na hindi itakda, tulad ng sa mga nakaraang release ng Perl. Niresolba nito ang [perl #112208]
.
Suporta para "?PATTERN?" wala malinaw opereytor ay naging inalis
Ang "m?PATTERN?" construct, na nagbibigay-daan sa pagtutugma ng isang regex nang isang beses lang, dati ay nagkaroon ng isang
alternatibong anyo na direktang isinulat na may delimiter ng tandang pananong, na inalis ang
tahasang "m" na operator. Ang paggamit na ito ay gumawa ng babala sa paghinto sa paggamit mula noong 5.14.0. Ito ay
ngayon ay isang syntax error, upang ang tandang pananong ay magagamit para magamit sa mga bagong operator.
"defined(@array)" at "tinukoy(%hash)" ay ngayon nakamamatay error
Ang mga ito ay hindi na ginagamit mula noong v5.6.1 at nagtaas ng mga babala sa paghinto mula noong v5.16.
paggamit a sumira or an ayos as a sanggunian ay ngayon nakamamatay error
Halimbawa, ang "%foo->{"bar"}" ay nagdudulot na ngayon ng nakamamatay na error sa compilation. Ang mga ito ay naging
hindi na ginagamit mula noong bago ang v5.8, at nagtaas ng mga babala sa paghinto sa paggamit mula noon.
Mga Pagbabago sa ang "*" tularan
Ang character na "*" sa prototype ng subroutine ay ginamit upang payagan ang mga bareword na mauna
higit sa karamihan, ngunit hindi lahat, mga subroutine na pangalan. Ito ay hindi kailanman pare-pareho at nagpakita ng buggy
pag-uugali.
Ngayon ay nabago na ito, kaya laging inuuna ang mga subroutine kaysa sa mga bareword, na
dinadala ito sa pagsang-ayon sa mga katulad na prototype na built-in na function:
sub splat(*) { ... }
sub foo {... }
splat(foo); # ngayon palaging splat(foo())
splat(bar); # pa rin splat('bar') tulad ng dati
malapit (foo); # malapit(foo())
malapit (bar); # malapit('bar')
Mga paghinto
Pagtatakda ng "${^ENCODING}" sa anumang bagay pero "undef"
Ang variable na ito ay nagpapahintulot sa Perl script na maisulat sa isang encoding maliban sa ASCII o UTF-8.
Gayunpaman, naaapektuhan nito ang lahat ng module sa buong mundo, na humahantong sa mga maling sagot at pagse-segment
mga pagkakamali. Ang mga bagong script ay dapat na nakasulat sa UTF-8; ang mga lumang script ay dapat i-convert sa UTF-8,
na madaling gawin gamit ang piconv utility.
paggamit of hindi graphic character in iisang karakter nagbabago pangalan
Ang syntax para sa single-character na mga pangalan ng variable ay mas maluwag kaysa sa mas mahabang variable
mga pangalan, na nagpapahintulot sa pangalan ng isang character na maging isang bantas na character o kahit na hindi nakikita (a
hindi graphic). Hindi na ginagamit ng Perl v5.20 ang mga kontrol sa saklaw ng ASCII bilang ganoong pangalan. Ngayon, lahat
hindi na ginagamit ang mga hindi graphic na character na dating pinapayagan. Ang praktikal na epekto ng
ito ay nangyayari lamang kapag wala sa ilalim ng "use utf8", at nakakaapekto lamang sa mga kontrol ng C1 (code point
0x80 hanggang 0xFF), NO-BREAK SPACE, at SOFT HYPHEN.
Inlining of "sub () { $var }" sa napapansin side-effects
Sa maraming mga kaso, ginagawa ni Perl ang "sub () { $var }" sa isang inlinable constant subroutine,
pagkuha ng halaga ng $var sa oras na sinusuri ang "sub" na expression. Ito ay maaaring masira
ang pag-uugali ng pagsasara sa mga kasong iyon kung saan ang $var ay kasunod na binago, dahil ang
hindi ibabalik ng subroutine ang binagong halaga. (Tandaan na ang lahat ng ito ay nalalapat lamang sa anonymous
mga subroutine na may walang laman na prototype ("sub ()").)
Ang paggamit na ito ay hindi na ginagamit sa mga pagkakataong iyon kung saan maaaring baguhin ang variable
sa ibang lugar. Natukoy ng Perl ang mga kasong iyon at naglalabas ng babala sa paghinto sa paggamit. Ang ganitong code ay
malamang na magbago sa hinaharap at huminto sa paggawa ng isang pare-pareho.
Kung ang iyong variable ay binago lamang sa lugar kung saan ito idineklara, gagawin ni Perl
patuloy na gawing inlinable ang sub na walang babala.
sub make_constant {
aking $var = shift;
ibalik ang sub () { $var }; #mabuti
}
sub make_constant_deprecated {
aking $var;
$var = shift;
ibalik ang sub () { $var }; # hindi na ginagamit
}
sub make_constant_deprecated2 {
aking $var = shift;
log_that_value($var); # ay maaaring baguhin ang $var
ibalik ang sub () { $var }; # hindi na ginagamit
}
Sa pangalawang halimbawa sa itaas, ang pagtukoy na ang $var ay nakatalaga sa isang beses lang ay napakahirap
tuklasin. Na ito ay nangyayari sa isang lugar maliban sa "aking" deklarasyon ay sapat na para kay Perl
hanapin itong kahina-hinala.
Nangyayari lang ang babala sa paghinto na ito para sa isang simpleng variable para sa katawan ng sub. (A
Ang "BEGIN" block o "use" na pahayag sa loob ng sub ay binabalewala, dahil hindi ito nagiging
bahagi ng katawan ng sub.) Para sa mas kumplikadong mga kaso, tulad ng
"sub () { do_something() if 0; $var }" ang pag-uugali ay nagbago kaya ang inlining ay
hindi mangyayari kung ang variable ay nababago sa ibang lugar. Ang ganitong mga kaso ay dapat na bihira.
paggamit of maramihang "/x" regexp nagbabago
Hindi na ginagamit ngayon ang pagsasabi ng isang bagay tulad ng alinman sa mga sumusunod:
qr/foo/xx;
/(?xax:foo)/;
gumamit ng re qw(/amxx);
Ibig sabihin, isang beses lang dapat mangyari ang "x" sa anumang string ng magkadikit na regular na expression
mga modifier ng pattern. Hindi kami naniniwala na mayroong anumang mga pangyayari nito sa lahat ng CPAN.
Ito ay bilang paghahanda para sa hinaharap na paglabas ng Perl na mayroong "/xx" permit white-space para sa
pagiging madaling mabasa sa mga klase ng character na naka-bracket (mga nakalagay sa mga square bracket: "[...]").
paggamit a WALANG PAHINGA puwang in a katangian bansag para "\N{...}" is ngayon hindi na ginagamit
Ang hindi-graphic na karakter na ito ay mahalagang hindi makilala sa isang regular na espasyo, at iba pa
hindi dapat payagan. Tingnan ang "CUSTOM ALIASES" sa mga charnames.
A literal "{" dapat ngayon be nakatakas in a huwaran
Kung gusto mo ng literal na left curly bracket (tinatawag din na left brace) sa regular
expression pattern, dapat mo na itong takasan sa pamamagitan ng alinman sa unahan nito gamit ang isang backslash
("\{") o ilakip ito sa loob ng mga square bracket na "[{]", o sa pamamagitan ng paggamit ng "\Q"; kung hindi a
itataas ang babala sa paghinto sa paggamit. Ito ay unang inihayag bilang paparating sa v5.16
palayain; ito ay magbibigay-daan sa hinaharap na mga extension sa wika na mangyari.
Paggawa lahat babala nakamamatay is nasiraan ng loob
Ang dokumentasyon para sa mga nakamamatay na babala ay nagsasaad na "gumamit ng mga babala FATAL => 'lahat'" ay
nasiraan ng loob, at nagbibigay ng mas matibay na pananalita tungkol sa mga panganib ng nakamamatay na mga babala sa pangkalahatan.
pagganap Mga Pagpapahusay
· Kung ang isang paraan o pangalan ng klase ay kilala sa oras ng pag-compile, ang isang hash ay na-precompute upang mapabilis
run-time na paraan ng paghahanap. Gayundin, ang mga pangalan ng compound method tulad ng "SUPER::new" ay na-parse sa
mag-compile ng oras, upang makatipid ng kinakailangang i-parse ang mga ito sa oras ng pagtakbo.
· Array at hash lookup (lalo na ang mga nested) na gumagamit lamang ng mga constant o simple
variable bilang mga susi, ngayon ay mas mabilis. Tingnan ang "Mga Panloob na Pagbabago" para sa higit pa
mga detalye.
· Ang "(...)x1", "("constant")x0" at "($scalar)x0" ay na-optimize na ngayon sa konteksto ng listahan. Kung
ang kanang-kamay na argumento ay pare-parehong 1, nawawala ang operator ng pag-uulit. Kung ang
Ang kanang argumento ay isang pare-parehong 0, ang buong expression ay na-optimize sa walang laman
list, hangga't ang kaliwang argumento ay isang simpleng scalar o pare-pareho. (Yan ay,
Ang "(foo())x0" ay hindi napapailalim sa pag-optimize na ito.)
· Ang pagtatalaga ng "substr" ay na-optimize na ngayon sa 4-argument na "substr" sa dulo ng isang
subroutine (o bilang argumentong "bumalik"). Dati, ang pag-optimize na ito lamang
nangyari sa walang laman na konteksto.
· Sa "\L...", "\Q...", atbp., ang sobrang "stringify" na op ay na-optimize na ngayon, na ginagawang
ang mga ito ay kasing bilis ng "lcfirst", "quotemeta", atbp.
· Ang pagtatalaga sa isang walang laman na listahan ay minsan mas mabilis. Sa partikular, hindi ito tumatawag
"FETCH" sa mga nakatali na argumento sa kanang bahagi, samantalang dati naman.
· Mayroong pagpapahusay sa pagganap ng hanggang 20% kapag ang "haba" ay inilapat sa isang hindi-
mahiwagang, hindi nakatali na string, at alinman sa "gumamit ng mga byte" ay nasa saklaw o hindi ginagamit ng string
UTF-8 sa loob.
· Sa karamihan ng perl build na may 64-bit integer, paggamit ng memory para sa hindi mahiwagang, hindi nakatali
Ang mga scalar na naglalaman lamang ng isang floating point value ay nabawasan ng pagitan ng 8 at 32
bytes, depende sa OS.
· Sa "@array = split", ang pagtatalaga ay maaaring i-optimize, upang ang "split" ay magsusulat
direkta sa array. Ang pag-optimize na ito ay nangyayari lamang para sa iba pang mga array ng package
kaysa sa @_, at minsan lang. Ngayon ang pag-optimize na ito ay nangyayari halos sa lahat ng oras.
· Ang "sumali" ay napapailalim na ngayon sa patuloy na pagtitiklop. Kaya halimbawa "sumali "-", "a", "b"" ay
na-convert sa oras ng pag-compile sa "ab". Bukod dito, "sumali" sa isang scalar o pare-pareho para sa
ang separator at isang solong-item na listahan na sasalihan ay pinasimple sa isang stringification, at
hindi man lang nasusuri ang separator.
· Ang "qq(@array)" ay ipinatupad gamit ang dalawang ops: isang stringify op at isang join op. Kung ang "qq"
naglalaman lamang ng isang array, ang stringification ay na-optimize.
· Ang "aming $var" at "our($s,@a,%h)" sa walang bisa na konteksto ay hindi na sinusuri sa oras ng pagtakbo.
Kahit isang buong pagkakasunud-sunod ng "aming $foo;" ang mga pahayag ay lalaktawan lamang. Pareho
nalalapat sa mga variable na "estado".
· Maraming mga panloob na function ang na-refactor upang mapabuti ang pagganap at bawasan ang mga ito
memory footprints. [perl #121436]
[perl #121906] [perl #121906]
· Ang mga filetest na "-T" at "-B" ay babalik nang mas maaga kapag may nakitang walang laman na file. [perl
#121489]
· Ang mga hash lookup kung saan ang susi ay pare-pareho ay mas mabilis.
· Ang mga subroutine na may walang laman na prototype at isang katawan na naglalaman lamang ng "undef" ay ngayon
karapat-dapat para sa inlining. [perl #122728]
· Ang mga subroutine sa mga pakete ay hindi na kailangang itabi sa mga typeglob: pagdedeklara ng a
Ang subroutine ay maglalagay na ngayon ng simpleng sub reference nang direkta sa itago kung maaari,
pag-save ng memorya. Ang typeglob ay umiiral pa rin, kaya ang pag-access dito ay magiging sanhi ng
itago ang entry na ia-upgrade sa isang typeglob (ibig sabihin ito ay isang panloob na pagpapatupad lamang
detalye). Ang pag-optimize na ito ay kasalukuyang hindi nalalapat sa mga XSUB o na-export na subroutine,
at tatanggalin ito ng mga method call, dahil ini-cache nila ang mga bagay sa typeglobs. [perl #120441]
· Ang mga function na "utf8::native_to_unicode()" at "utf8::unicode_to_native()" (tingnan ang utf8)
ay na-optimize na ngayon sa mga platform ng ASCII. Wala na ngayon kahit kaunting performance
hit sa pagsulat ng code portable sa pagitan ng ASCII at EBCDIC platform.
· Gumagamit ang Win32 Perl ng 8 KB na mas mababa sa bawat proseso ng memorya kaysa dati para sa bawat proseso ng perl,
dahil ang ilang data ay memorya na ngayong nakamapa mula sa disk at ibinabahagi sa pagitan ng mga proseso mula sa
parehong perl binary.
Module at Pragmatiko
Na-update Module at Pragmatiko
Marami sa mga aklatan na ipinamahagi gamit ang perl ay na-upgrade mula noong v5.20.0. Para sa
kumpletong listahan ng mga pagbabago, patakbuhin ang:
corelist --diff 5.20.0 5.22.0
Maaari mo ring palitan ang iyong paboritong bersyon sa halip na 5.20.0.
Ang ilang mga kapansin-pansing pagbabago ay kinabibilangan ng:
· Archive::Ang tar ay na-upgrade sa bersyon 2.04.
Ang mga pagsubok ay maaari na ngayong patakbuhin nang magkatulad.
· Ang mga katangian ay na-upgrade sa bersyon 0.27.
Ang paggamit ng "memEQs" sa XS ay naitama. [perl #122701]
Iwasang magbasa nang lampas sa dulo ng buffer. [perl #122629]
· Ang B ay na-upgrade sa bersyon 1.58.
Nagbibigay ito ng bagong function na "B::safename", batay sa umiiral na "B::GV->SAFENAME",
na nagko-convert ng "\cOPEN" sa "^OPEN".
Ang mga nulled COP ay nasa klase na ngayon na "B::COP", sa halip na "B::OP".
Ang mga bagay na "B::REGEXP" ay nagbibigay na ngayon ng "qr_anoncv" na paraan para sa pag-access sa implicit na CV
nauugnay sa mga bagay na "qr//" na naglalaman ng mga bloke ng code, at isang paraan na "compflags" na
ibinabalik ang mga nauugnay na flag na nagmula sa "qr//blahblah" op.
Nagbibigay na ngayon ang "B::PMOP" ng "pmregexp" na paraan na nagbabalik ng object na "B::REGEXP". Dalawang bago
mga klase, "B::PADNAME" at "B::PADNAMELIST", ay ipinakilala.
Isang bug kung saan, pagkatapos ng paggawa ng ithread o psuedofork, mga espesyal/imortal na SV sa
ang child ithread/psuedoprocess ay walang tamang klase ng "B::SPECIAL", ay
nakapirming. Ang "id" at "outid" na mga pamamaraan ng PADLIST ay idinagdag.
· B::Concise ay na-upgrade sa bersyon 0.996.
Ang mga null ops na bahagi ng execution chain ay binibigyan na ngayon ng mga sequence number.
Ang mga pribadong flag para sa mga nulled ops ay itinatapon na ngayon ng mga mnemonics gaya ng magiging para sa
non-nulled counterparts.
· B:: Ang Deparse ay na-upgrade sa bersyon 1.35.
Inaalis na nito ang "+sub : attr { ... }" nang tama sa simula ng isang pahayag. Kung wala
ang paunang "+", "sub" ay magiging isang label ng pahayag.
Ang mga "BEGIN" na bloke ay inilalabas na ngayon sa tamang lugar sa halos lahat ng oras, ngunit ang pagbabago
sa kasamaang-palad ay nagpasimula ng regression, sa "BEGIN" na mga bloke na nangyari bago pa lang
ang dulo ng nakapaloob na bloke ay maaaring lumitaw sa ibaba nito sa halip.
Ang "B::Deparse" ay hindi na naglalagay ng maling "lokal" dito at doon, tulad ng para sa "LIST =
tr/a//d". [perl #119815]
Ang mga katabing "gamitin" na mga pahayag ay hindi na sinasadyang nakapugad kung ang isa ay naglalaman ng isang "gawin"
harangan. [perl #115066]
Ang mga naka-parentesis na array sa mga listahang ipinasa sa "\" ay tama na ngayong inalis
panaklong (hal, "\(@a, (@b), @c)" ngayon ay nagpapanatili ng mga panaklong sa paligid ng @b), kaya
pinapanatili ang pag-flattening na gawi ng mga naka-reference na array na panaklong. Dati, ito
gumana lang para sa isang array: "\(@a)".
Ang "local our" ay naalis na ngayon nang tama, kasama ang "our" na kasama.
"for($foo; !$bar; $baz) {...}" ay umalis nang walang "!" (o hindi"). Ito ay naging
nakapirming.
Ang mga pangunahing keyword na sumasalungat sa mga lexical na subroutine ay hindi na kasama sa
"CORE::" prefix.
Ang "foreach state $x (...) {...}" ay umalis na ngayon nang tama sa "state" at hindi "my".
"our @array = split(...)" ngayon ay umalis nang tama sa "our" sa mga kasong iyon kung saan ang
na-optimize ang pagtatalaga.
Umalis na ito "aming(LISTAHAN)" at nag-type ng leksikal ("aking Aso $spot") nang tama.
Iwanan ang $#_ bilang iyon sa halip na bilang $#{_}. [perl #123947]
Ang mga BEGIN block sa dulo ng kalakip na saklaw ay naalis na ngayon sa tamang lugar.
[perl #77452]
Ang mga BEGIN block ay minsan ay inalis bilang __ANON__, ngunit ngayon ay palaging tinatawag na BEGIN.
Ang mga lexical na subroutine ay ganap na nawala. [perl #116553]
Hindi na inaalis ng "Anything =~ y///r" na may "/r" ang left-hand operand.
Ang mga op tree na bumubuo sa mga bloke ng regexp code ay talagang naalis na ngayon. Dati, ang
ginamit ang orihinal na string na bumubuo sa regular na expression. Nagdulot iyon ng mga problema
na may "qr/(?{<
[perl #123217] [perl #115256]
$; sa dulo ng isang pahayag ay hindi na nawawala ang tuldok-kuwit nito. [perl #123357]
Ang ilang mga kaso ng subroutine deklarasyon na naka-imbak sa itago sa shorthand form ay pagiging
tinanggal.
Ang mga hindi ASCII na character ay tuloy-tuloy na ngayong na-escape sa mga string, sa halip na ilan sa mga
oras. (Mayroon pa ring mga natitirang problema sa mga regular na expression at identifier
na hindi pa naayos.)
Kapag ang mga prototype na sub call ay umalis ng "&" (hal, Sa ilalim ng -P opsyon), "scalar"
ay idinagdag na ngayon kung saan naaangkop, upang pilitin ang kontekstong scalar na ipinahiwatig ng prototype.
"require(foo())", "do(foo())", "goto(foo())" at mga katulad na construct na may loop controls
ngayon ay umalis nang tama. Ang mga panlabas na panaklong ay hindi opsyonal.
Hindi na tinatakasan ang whitespace sa mga regular na expression, dahil nakakakuha ito
maling nakatakas sa loob ng "(?x:...)" na mga seksyon.
Ang "sub foo { foo() }" ay wala na ngayon kasama ang mga mandatoryong panaklong iyon.
Ang "/@array/" ay nawala na ngayon bilang isang regular na expression, at hindi lang @array.
Ang "/@{-}/", "/@{+}/" at $#{1} ay wala na ngayong mga braces, na sapilitan sa
mga kasong ito.
Sa umaalis na mga bundle ng feature, ang "B::Deparse" ay naglalabas ng "no feature;" una sa halip na
"walang feature ':all';". Naayos na ito.
Ang "chdir FH" ay umalis na ngayon nang walang mga panipi.
Ang "\my @a" ay nawala na ngayon nang walang panaklong. (Pinapatag ng panaklong ang array.)
Ang "system" at "exec" na sinusundan ng isang block ay naalis na ngayon nang tama. Dati doon
ay isang maling "gawin" bago ang pagharang.
"use constant QR => qr/.../flags" na sinusundan ng """ =~ QR" ay wala na
mga watawat.
Inaalis ang "BEGIN { undef &foo }" gamit ang -w ang switch na pinagana ay nagsimulang lumabas
'uninitialized' na mga babala sa Perl 5.14. Naayos na ito.
Ang pag-alis ng mga tawag sa mga sub na may prototype na "(;+)" ay nagresulta sa isang walang katapusang loop. Ang
Ang mga prototype na "(;$") "(_)" at "(;_)" ay binigyan ng maling pangunguna, na nagdulot ng
"foo($a<$b)" na aalisin nang walang panaklong.
Nagbibigay na ngayon ang Deparse ng tinukoy na state sub sa mga panloob na sub.
· B::Op_private ay naidagdag.
B::Ang Op_private ay nagbibigay ng detalyadong impormasyon tungkol sa mga flag na ginamit sa "op_private"
field ng perl opcodes.
· bigint, bignum, bigrat ay na-upgrade sa bersyon 0.39.
Idokumento sa CAVEATS na ang paggamit ng mga string bilang mga numero ay hindi palaging hihingin ang malaking numero
overloading, at kung paano ito i-invoke. [rt.perl.org #123064]
· Ang Carp ay na-upgrade sa bersyon 1.36.
Binabalewala na ngayon ng "Carp::Heavy" ang mga hindi pagkakatugma ng bersyon sa Carp kung ang Carp ay mas bago sa 1.12,
dahil ang lakas ng loob ni "Carp::Heavy" ay pinagsama sa Carp sa puntong iyon. [perl #121574]
Mas mahusay na ngayon ang paghawak ng Carp sa mga non-ASCII platform.
Off-by-one na pag-aayos ng error para sa Perl < 5.14.
· Ang constant ay na-upgrade sa bersyon 1.33.
Tumatanggap na ito ngayon ng ganap na kwalipikadong mga permanenteng pangalan, na nagpapahintulot sa mga constant na tukuyin sa
mga pakete maliban sa tumatawag.
· Ang CPAN ay na-upgrade sa bersyon 2.11.
Magdagdag ng suporta para sa "Cwd::getdcwd()" at ipakilala ang solusyon para sa maling pag-uugali na nakita sa
Strawberry Perl 5.20.1.
Ayusin ang "chdir()" pagkatapos bumuo ng mga dependencies bug.
Ipakilala ang pang-eksperimentong suporta para sa mga plugin/hook.
Isama ang mga pinagmumulan ng "App::Cpan."
Huwag suriin ang recursion sa mga opsyonal na dependencies.
Suriin ang katinuan META.yml upang maglaman ng hash. [cpan #95271]
· Ang CPAN::Meta::Ang mga kinakailangan ay na-upgrade sa bersyon 2.132.
Gumagana sa mga limitasyon sa "bersyon::vpp" sa pag-detect ng v-string magic at nagdaragdag ng suporta
para sa paparating na ExtUtils::MakeMaker bootstrap bersyon.pm para sa Perls na mas matanda sa 5.10.0.
· Data::Dumper ay na-upgrade sa bersyon 2.158.
Inaayos ang CVE-2014-4330 sa pamamagitan ng pagdaragdag ng configuration variable/opsyon upang limitahan ang recursion kapag
paglalaglag ng malalim na istruktura ng data.
Mga pagbabago upang malutas ang mga isyu sa Coverity. Maling naimbak ng XS dump ang pangalan ng code
mga sanggunian na nakaimbak sa isang GLOB. [perl #122070]
· Ang DynaLoader ay na-upgrade sa bersyon 1.32.
Alisin ang "dl_nonlazy" global kung hindi ginagamit sa Dynaloader. [perl #122926]
· Ang Encode ay na-upgrade sa bersyon 2.72.
Ang "piconv" ay mayroon na ngayong mas mahusay na paghawak ng error kapag ang pangalan ng pag-encode ay wala, at a
build breakage kapag ina-upgrade ang Encode sa perl-5.8.2 at mas maaga ay naayos na.
Gumagana na ngayon ang pagbuo sa C++ mode sa Windows.
· Na-upgrade si Errno sa bersyon 1.23.
Idagdag ang "-P" sa preprocessor command-line sa GCC 5. Nagdagdag ang GCC ng mga karagdagang direktiba sa linya,
paglabag sa pag-parse ng mga kahulugan ng error code. [rt.perl.org #123784]
· Ang eksperimental ay na-upgrade sa bersyon 0.013.
Mga tampok ng hardcode para sa Perls na mas matanda sa 5.15.7.
· ExtUtils::CBuilder ay na-upgrade sa bersyon 0.280221.
Nag-aayos ng regression sa Android. [perl #122675]
· ExtUtils::Na-upgrade ang Manifest sa bersyon 1.70.
Inaayos ang isang bug na may "maniread()" sa paghawak ng mga sinipi na filename at pinapabuti ang "manifind()"
upang sundin ang mga symlink. [perl #122415]
· ExtUtils::ParseXS ay na-upgrade sa bersyon 3.28.
Ideklara lang ang "file" na hindi nagamit kung talagang tutukuyin namin ito. Pagbutihin ang nabuong "RETVAL" code
henerasyon upang maiwasan ang paulit-ulit na pagtukoy sa ST(0). [perl #123278] Palawakin at idokumento
ang "/OBJ$/" hanggang "/REF$/" typemap optimization para sa "DESTROY" na paraan. [perl
# 123418]
· Na-upgrade ang Fcntl sa bersyon 1.13.
Magdagdag ng suporta para sa Linux pipe buffer size na "fcntl()" na mga utos.
· Ang File::Find ay na-upgrade sa bersyon 1.29.
Magbabala na ngayon ang "find()" at "finddepth()" kung pumasa sa hindi naaangkop o maling spelling
mga pagpipilian.
· Ang File::Glob ay na-upgrade sa bersyon 1.24.
Iwasang lumawak ang "SvIV()" para tawagin ang "get_sv()" ng tatlong beses sa ilang lugar. [perl
# 123606]
· HTTP::Tiny ay na-upgrade sa bersyon 0.054.
Ang "keep_alive" ay fork-safe at thread-safe na ngayon.
· Na-upgrade ang IO sa bersyon 1.35.
Naayos na ang pagpapatupad ng XS para sa mas lumang Perls.
· IO::Socket ay na-upgrade sa bersyon 1.38.
Idokumento ang mga limitasyon ng "connected()" na paraan. [perl #123096]
· Na-upgrade ang IO::Socket::IP sa bersyon 0.37.
Ang isang mas mahusay na pag-aayos para sa subclassing "connect()". [cpan #95983]
[cpan #95983]
Nagpapatupad ng Timeout para sa "connect()". [cpan #92075]
· Ang libnet na koleksyon ng mga module ay na-upgrade sa bersyon 3.05.
Suporta para sa IPv6 at SSL sa "Net::FTP", "Net::NNTP", "Net::POP3" at "Net::SMTP".
Mga pagpapabuti sa "Net::SMTP" na pagpapatotoo.
· Lokal::Ang mga code ay na-upgrade sa bersyon 3.34.
Inayos ang isang bug sa mga script na ginamit upang kunin ang data mula sa mga spreadsheet na pumigil sa
SHP currency code mula sa paghanap. [cpan #94229]
Ang mga bagong code ay naidagdag.
· Math::BigInt ay na-upgrade sa bersyon 1.9997.
I-synchronize ang mga pagbabago sa POD mula sa release ng CPAN. "Math::BigFloat->blog(x)" gagawin
minsan ay nagbabalik ng "blog(2*x)" kapag ang katumpakan ay higit sa 70 digit. Ang resulta
ng "Math::BigFloat->bdiv()" sa konteksto ng listahan ay nakakatugon na ngayon sa "x = quotient * divisor +
natitira".
Tamang paghawak ng mga subclass. [cpan #96254]
[cpan #96254]
· Module::Ang metadata ay na-upgrade sa bersyon 1.000026.
Suportahan ang mga pag-install sa mas lumang perls na may ExtUtils::MakeMaker na mas maaga kaysa sa 6.63_03
· Ang overload ay na-upgrade sa bersyon 1.26.
Ang isang kalabisan na "ref $sub" na pagsusuri ay inalis.
· Ang koleksyon ng module ng PathTools ay na-upgrade sa bersyon 3.56.
Isang babala mula sa gcc ang compiler ay iniiwasan na ngayon kapag binubuo ang XS.
Huwag gawing "/" ang nangungunang "//" sa Cygwin. [perl #122635]
· Ang perl5db.pl ay na-upgrade sa bersyon 1.49.
Ang debugger ay magdudulot ng pagkabigo sa paggigiit. [perl #124127]
Ang "fork()" sa debugger sa ilalim ng "tmux" ay lilikha na ngayon ng bagong window para sa forked
proseso. [perl #121333]
Sine-save na ngayon ng debugger ang kasalukuyang gumaganang direktoryo sa startup at ibinabalik ito kapag
i-restart mo ang iyong program gamit ang "R" o "rerun". [perl #121509]
· PerlIO::scalar ay na-upgrade sa bersyon 0.22.
Ang pagbabasa mula sa isang posisyon na lampas sa dulo ng scalar ngayon ay tama na nagbabalik sa dulo ng
file. [perl #123443]
Nabigo pa rin ang paghahanap sa isang negatibong posisyon, ngunit hindi na umaalis sa set ng posisyon ng file
sa isang lokasyon ng negasyon.
Ang "eof()" sa isang "PerlIO::scalar" handle ay maayos na ngayong nagbabalik ng true kapag ang posisyon ng file
ay lumampas sa 2GB mark sa 32-bit system.
Ang pagtatangkang sumulat sa mga posisyon ng file na imposible para sa platform ay nabigo nang maaga
sa halip na pambalot sa 4GB.
· Pod::Ang Perldoc ay na-upgrade sa bersyon 3.25.
Ang mga filehandle na binuksan para sa pagbabasa o pagsusulat ay mayroon na ngayong set na ":encoding(UTF-8)". [cpan
#98019]
· Ang POSIX ay na-upgrade sa bersyon 1.53.
Ang C99 math function at constants (halimbawa "acosh", "isinf", "isnan", "round",
"trunc"; "M_E", "M_SQRT2", "M_PI") ay naidagdag.
Ang "POSIX::tmpnam()" ay gumagawa na ngayon ng babala sa paghinto sa paggamit. [perl #122005]
· Na-upgrade ang Safe sa bersyon 2.39.
Ang "reval" ay hindi nagpapalaganap ng walang bisa na konteksto nang maayos.
· Ang Scalar-List-Utils ay na-upgrade sa bersyon 1.41.
Ang isang bagong module, Sub::Util, ay idinagdag, na naglalaman ng mga function na nauugnay sa mga CODE ref,
kasama ang "subname" (inspirasyon ng "Sub::Identity") at "set_subname" (kinopya at
pinalitan ng pangalan mula sa "Sub::Pangalan"). Ang paggamit ng "GetMagic" sa "List::Util::reduce()" ay mayroon din
naayos na. [cpan #63211]
· Ang SDBM_File ay na-upgrade sa bersyon 1.13.
Pinasimple ang proseso ng pagbuo. [perl #123413]
· Oras::Piece ay na-upgrade sa bersyon 1.29.
Kapag medyo nagpi-print ng negatibong "Oras::Segundo", ang "minus" ay hindi na mawawala.
· Unicode::Na-upgrade ang Collate sa bersyon 1.12.
Ang mga pinahusay na magkahiwalay na contraction ng Bersyon 0.67 ay hindi wasto bilang default at ito ay
sinusuportahan bilang isang parameter na "long_contraction".
· Unicode:: Ang Normalize ay na-upgrade sa bersyon 1.18.
Ang pagpapatupad ng XSUB ay inalis sa pabor sa purong Perl.
· Unicode:: Ang UCD ay na-upgrade sa bersyon 0.61.
Isang bagong function property_values() ay naidagdag upang ibalik ang isang naibigay na ari-arian na posible
halaga.
Isang bagong function charprop() ay naidagdag upang ibalik ang halaga ng isang naibigay na ari-arian para sa a
ibinigay na code point.
Isang bagong function charprops_all() ay naidagdag upang ibalik ang mga halaga ng lahat ng Unicode
mga katangian para sa isang ibinigay na code point.
Ang isang bug ay naayos upang iyon propaliases() ibinabalik ang tamang maikli at mahabang pangalan
para sa mga extension ng Perl kung saan ito ay mali.
Ang isang bug ay naayos upang iyon prop_value_aliases() nagbabalik ng "undef" sa halip na isang mali
resulta para sa mga property na Perl extension.
Gumagana na ngayon ang module na ito sa mga platform ng EBCDIC.
· Ang utf8 ay na-upgrade sa bersyon 1.17
Ang hindi pagkakatugma sa pagitan ng dokumentasyon at ang code sa "utf8::downgrade()" ay naayos sa
pabor sa dokumentasyon. Ang opsyonal na pangalawang argumento ay tama na ngayong itinuturing bilang a
perl boolean (true/false semantics) at hindi bilang integer.
· Ang bersyon ay na-upgrade sa bersyon 0.9909.
Maraming pagbabago. Tingnan ang Mga Pagbabago file sa CPAN distribution para sa mga detalye.
· Ang Win32 ay na-upgrade sa bersyon 0.51.
Sinusuportahan na ngayon ng "GetOSName()" ang Windows 8.1, at gumagana na ngayon ang pagbuo sa C++ mode.
· Win32API::Na-upgrade ang file sa bersyon 0.1202
Gumagana na ngayon ang pagbuo sa C++ mode.
· Ang XSLoader ay na-upgrade sa bersyon 0.20.
Payagan ang XSLoader na mag-load ng mga module mula sa ibang namespace. [perl #122455]
Inalis Module at Pragmatiko
Ang mga sumusunod na module (at nauugnay na mga module) ay inalis mula sa core perl
pamamahagi:
· CGI
· Modyul::Bumuo
dokumentasyon
bago dokumentasyon
perlunicook
Ang dokumentong ito, ni Tom Christiansen, ay nagbibigay ng mga halimbawa ng paghawak ng Unicode sa Perl.
Mga Pagbabago sa Nabubuhay dokumentasyon
perlaix
· Isang tala sa mahabang doubles ay naidagdag.
perlapi
· Tandaan na ang "SvSetSV" ay hindi gumagawa ng set magic.
· "sv_usepvn_flags" - ayusin ang dokumentasyon para banggitin ang paggamit ng "Newx" sa halip na
"malloc".
[perl #121869]
· Linawin kung saan maaaring i-embed ang "NUL" o kinakailangan upang wakasan ang isang string.
· Ang ilang dokumentasyon na dati ay nawawala dahil sa mga error sa pag-format ay ngayon
kasama.
· Ang mga entry ay nakaayos na ngayon sa mga grupo sa halip na sa pamamagitan ng file kung saan sila matatagpuan.
· Ang alpabetikong pag-uuri ng mga entry ay patuloy na ginagawa (awtomatikong ginagawa ng POD
generator) upang gawing mas madaling mahanap ang mga entry kapag nag-scan.
perldata
· Ang syntax ng single-character na mga variable na pangalan ay dinala ng up-to-date at higit pa
ganap na ipinaliwanag.
· Inilalarawan ang mga numero ng hexadecimal floating point, tulad ng infinity at NaN.
perlebcdic
· Ang dokumentong ito ay makabuluhang na-update sa liwanag ng kamakailang mga pagpapabuti sa
Suporta sa EBCDIC.
perlfilter
· Nagdagdag ng seksyong LIMITASYON.
perlfunc
· Banggitin na ang "study()" ay kasalukuyang no-op.
· Ang pagtawag sa "tanggalin" o "umiiral" sa mga halaga ng array ay inilarawan na ngayon bilang "malakas
nasiraan ng loob" sa halip na "nawalan ng pag-asa".
· Pagbutihin ang dokumentasyon ng "aming".
· Ang "-l" ngayon ay nagsasaad na ito ay magbabalik ng false kung ang mga symlink ay hindi sinusuportahan ng file
sistema. [perl #121523]
· Tandaan na ang "exec LIST" at "system LIST" ay maaaring bumalik sa shell sa Win32. Tanging ang
indirect-object syntax na "exec PROGRAM LIST" at "system PROGRAM LIST" ay mapagkakatiwalaan
iwasan ang paggamit ng shell.
Ito ay nabanggit din sa perlport.
[perl #122046]
perlguts
· Ang halimbawa ng OOK ay na-update upang isaalang-alang ang mga pagbabago sa COW at isang pagbabago sa
imbakan ng offset.
· Mga detalye sa mga simbolo ng antas ng C at idinagdag ang libperl.t.
· Ang impormasyon sa paghawak ng Unicode ay naidagdag
· Ang impormasyon sa paghawak ng EBCDIC ay naidagdag
perlhack
· May idinagdag na tala tungkol sa pagtakbo sa mga platform na may mga set ng character na hindi ASCII
· May idinagdag na tala tungkol sa pagsubok sa pagganap
perlhacktips
· Ang dokumentasyon ay idinagdag na naglalarawan ng mga panganib ng pag-aakalang wala
baguhin ang mga nilalaman ng static na memorya na itinuro ng mga return value ng Perl's
mga wrapper para sa mga function ng C library.
· Ang mga kapalit para sa "tmpfile", "atoi", "strtol", at "strtoul" ay inirerekomenda na ngayon.
· Nai-update na dokumentasyon para sa "test.valgrind" na "make" na target. [perl #121431]
· Ibinibigay ang impormasyon tungkol sa pagsusulat ng mga test file nang portable sa mga non-ASCII na platform.
· Isang tala ay naidagdag tungkol sa kung paano makakuha ng isang C language stack backtrace.
perlhpux
· Tandaan na ang mensaheng "Redeclaration ng "sendpath" na may ibang klase ng storage
specifier" ay hindi nakakapinsala.
perllocale
· Na-update para sa mga pagpapahusay sa v5.22, kasama ang ilang mga paglilinaw.
perlmodstyle
· Sa halip na ituro ang listahan ng module, itinuturo namin ngayon ang PrePAN
<http://prepan.org/>.
perlop
· Na-update para sa mga pagpapahusay sa v5.22, kasama ang ilang mga paglilinaw.
perlpodspec
· Ang detalye ng wika ng pod ay nagbabago upang ang default na pag-encode ng mga pod
na wala sa UTF-8 (maliban kung ipinahiwatig) ay CP1252 sa halip na ISO 8859-1
(Latin1).
perlpolicy
· Mayroon na tayong code of conduct para sa p5p mailing list, gaya ng nakadokumento sa "STANDARDS OF
CONDUCT" sa perlpolicy.
· Ang mga kundisyon para sa pagmamarka ng isang pang-eksperimentong tampok bilang hindi pang-eksperimento ay nakatakda na ngayon
out.
· Ang paglilinaw ay ginawa kung anong uri ng mga pagbabago ang pinahihintulutan sa pagpapanatili
naglalabas.
perlport
· Ang hindi napapanahon na impormasyong partikular sa VMS ay naayos at/o pinasimple.
· Ang mga tala tungkol sa EBCDIC ay naidagdag.
perlre
· Ang paglalarawan ng "/x" modifier ay nilinaw upang tandaan na ang mga komento ay hindi maaaring
ipagpatuloy sa susunod na linya sa pamamagitan ng pagtakas sa kanila; at mayroon na ngayong listahan ng lahat ng
mga character na itinuturing na whitespace ng modifier na ito.
· Ang bagong "/n" modifier ay inilarawan.
· May idinagdag na tala kung paano gawing portable ang mga hanay ng klase ng character na naka-bracket sa hindi-
ASCII machine.
perlrebackslash
· Nagdagdag ng dokumentasyon ng "\b{sb}", "\b{wb}", "\b{gcb}", at "\b{g}".
perlrecharclass
· Ang mga paglilinaw ay naidagdag sa "Mga Saklaw ng Character" sa perlrecharclass sa epekto
"[AZ]", "[az]", "[0-9]" at anumang mga subrange nito sa regular na expression na naka-bracket
ang mga klase ng character ay garantisadong tumutugma nang eksakto kung ano ang gagawin ng isang walang muwang na nagsasalita ng Ingles
asahan na magkatugma sila, kahit na sa mga platform (gaya ng EBCDIC) kung saan kailangang gumawa ng dagdag si perl
gawain upang maisakatuparan ito.
· Ang dokumentasyon ng Mga Klase ng Naka-bracket na Character ay pinalawak upang masakop ang
mga pagpapabuti sa "qr/[\N{named sequence}]/" (tingnan sa ilalim ng "Mga Piniling Bug Fixes").
perlref
· Isang bagong seksyon ang naidagdag na Pagtatalaga sa Mga Sanggunian
perlsec
· Idinagdag ang mga komento sa pagiging kumplikado ng algorithm at mga nakatali na hash.
perlsyn
· Ang isang kalabuan sa dokumentasyon ng "..." na pahayag ay naitama. [perl
#122661]
· Ang walang laman na kondisyon sa "para sa" at "habang" ay dokumentado na ngayon sa perlsyn.
perlunicode
· Ito ay nagkaroon ng malawak na mga rebisyon upang dalhin ito hanggang sa kasalukuyan sa kasalukuyang suporta sa Unicode
at para mas madaling mabasa. Kapansin-pansin na binago ng Unicode 7.0 ang dapat nitong gawin
may mga hindi karakter. Pinapanatili ni Perl ang lumang paraan ng paghawak para sa mga dahilan ng atrasado
pagkakatugma. Tingnan ang "Noncharacter code point" sa perlunicode.
perluniintro
· Payo para sa kung paano siguraduhin na ang iyong mga string at regular na expression pattern ay
interpreted bilang Unicode ay na-update.
perlvar
· Ang $] ay hindi na nakalista bilang hindi na ginagamit. Sa halip, idinagdag ang talakayan sa
mga pakinabang at disadvantages ng paggamit nito kumpara sa $^V. Ang $OLD_PERL_VERSION ay muling idinagdag
sa dokumentasyon bilang mahabang anyo ng $].
· Ang "${^ENCODING}" ay minarkahan na ngayon bilang hindi na ginagamit.
· Ang entry para sa "%^H" ay nilinaw upang ipahiwatig na maaari lamang itong pangasiwaan ang mga simpleng halaga.
perlvms
· Inalis na ang luma at/o maling materyal.
· Nai-update na dokumentasyon sa kapaligiran at pakikipag-ugnayan ng shell sa VMS.
perlxs
· Nagdagdag ng talakayan ng mga isyu sa lokal sa XS code.
Diagnostics
Ang mga sumusunod na karagdagan o pagbabago ay ginawa sa diagnostic output, kabilang ang mga babala
at mga nakamamatay na mensahe ng error. Para sa kumpletong listahan ng mga diagnostic na mensahe, tingnan ang perldiag.
bago Diagnostics
bago Mali
· Masamang simbolo para sa scalar
(P) Isang panloob na kahilingan ang humiling na magdagdag ng scalar entry sa isang bagay na hindi isang simbolo
pagpasok sa mesa.
· Hindi maaaring gumamit ng hash bilang sanggunian
(F) Sinubukan mong gumamit ng hash bilang sanggunian, tulad ng sa "%foo->{"bar"}" o
"%$ref->{"hello"}". Ang mga bersyon ng perl <= 5.6.1 ay ginamit upang payagan ang syntax na ito, ngunit
hindi dapat.
· Hindi maaaring gumamit ng array bilang reference
(F) Sinubukan mong gumamit ng array bilang reference, tulad ng sa "@foo->[23]" o "@$ref->[99]".
Ang mga bersyon ng perl <= 5.6.1 ay ginamit upang payagan ang syntax na ito, ngunit hindi dapat.
· Hindi magagamit ang 'defined(@array)' (Marahil ay dapat mo na lang alisin ang tinukoy()?)
(F) "defined()" ay hindi kapaki-pakinabang sa mga arrays dahil sinusuri nito ang isang hindi natukoy skalar
halaga. Kung gusto mong makita kung walang laman ang array, gamitin lang
"if (@array) { # not empty }" halimbawa.
· Hindi magamit ang 'defined(%hash)' (Marahil ay dapat mo na lang alisin ang tinukoy()?)
(F) ang "defined()" ay karaniwang hindi tama sa mga hash.
Bagama't mali ang "defined %hash" sa isang simpleng hindi pa nagagamit na hash, nagiging totoo ito sa
ilang di-halatang pangyayari, kabilang ang mga iterator, mahihinang sanggunian, mga pangalan ng itago,
kahit na nananatiling totoo pagkatapos ng "undef %hash". Ang mga bagay na ito ay gumagawa ng "tinukoy na %hash" nang patas
walang silbi sa pagsasanay, kaya ito ngayon ay bumubuo ng isang nakamamatay na error.
Kung ang isang tseke para sa hindi walang laman ang gusto mo pagkatapos ay ilagay lamang ito sa boolean na konteksto (tingnan
"Scalar values" sa perldata):
kung (%hash) {
# walang laman
}
Kung "tinukoy mo ang %Foo::Bar::QUUX" para tingnan kung may ganoong variable ng package
pagkatapos ay hindi talaga iyon maaasahan, at hindi ito isang magandang paraan upang magtanong tungkol sa
mga feature ng isang package, o kung ito ay na-load, atbp.
· Hindi ma-chr %f
(F) Nagpasa ka ng di-wastong numero (tulad ng infinity o hindi-isang-number) sa "chr".
· Hindi ma-compress ang %f sa pack
(F) Sinubukan mong i-convert ang isang infinity o hindi-isang-numero sa isang unsigned character, na
walang kwenta.
· Hindi ma-pack ang %f ng '%c'
(F) Sinubukan mong i-convert ang isang infinity o hindi-isang-number sa isang character, na ginagawang hindi
pakiramdam.
· Hindi makapag-print ng %f gamit ang '%c'
(F) Sinubukan mong mag-print ng infinity o not-a-number bilang character (%c), na hindi
kahulugan. Baka '%s' ang ibig mong sabihin, o pinag-stringify lang ito?
· Ang mga kahulugan ng alyas ng charnames ay maaaring hindi naglalaman ng pagkakasunod-sunod ng maraming espasyo
(F) Tinukoy mo ang isang pangalan ng character na mayroong maraming mga character na espasyo sa isang hilera. Baguhin
ang mga ito sa iisang espasyo. Karaniwan ang mga pangalang ito ay tinukoy sa ":alias" na pag-import
argument na "gumamit ng mga charnames", ngunit maaari silang tukuyin ng isang tagasalin na naka-install sa
$^H{charnames}. Tingnan ang "CUSTOM ALIASES" sa mga charnames.
· Ang mga kahulugan ng alyas ng charname ay maaaring hindi naglalaman ng trailing white-space
(F) Tinukoy mo ang isang pangalan ng character na nagtapos sa isang character na espasyo. Tanggalin ang
trailing space (s). Karaniwan ang mga pangalang ito ay tinukoy sa ":alias" import argument sa
"gumamit ng mga charnames", ngunit maaari silang tukuyin ng isang tagasalin na naka-install sa
$^H{charnames}. Tingnan ang "CUSTOM ALIASES" sa mga charnames.
· Ang :const ay hindi pinahihintulutan sa mga pinangalanang subroutine
(F) Ang katangiang "const" ay nagdudulot ng isang hindi kilalang subroutine na tumakbo at ang halaga nito
nakunan sa oras na ito ay na-clone. Ang mga pinangalanang subroutine ay hindi naka-clone ng ganito,
kaya ang katangian ay walang kahulugan sa kanila.
· Hexadecimal float: panloob na error
(F) May nangyaring hindi maganda sa paghawak ng hexadecimal float.
· Hexadecimal float: hindi sinusuportahang mahabang double format
(F) Na-configure mo ang Perl na gumamit ng mahahabang doble ngunit ang mga panloob ng mahabang doble
format ay hindi kilala, samakatuwid ang hexadecimal float output ay imposible.
· Ilegal na suidscript
(F) Ang script na pinapatakbo sa ilalim ng suiperl ay kahit papaano ay ilegal.
· Sa '(?...)', ang '(' at '?' ay dapat na magkatabi sa regex; minarkahan ng <-- DITO sa m/%s/
(F) Ang dalawang-character na sequence na "(?" sa kontekstong ito sa isang pattern ng regular na expression
dapat ay isang hindi mahahati na token, na walang namamagitan sa pagitan ng "(" at ang "?",
pero pinaghiwalay mo sila.
· Sa '(*PANDIWA...)', ang '(' at '*' ay dapat na magkatabi sa regex; minarkahan ng <-- DITO sa
MS/
(F) Ang dalawang-character na sequence na "(*" sa kontekstong ito sa isang pattern ng regular na expression
dapat ay isang hindi mahahati na token, na walang namamagitan sa pagitan ng "(" at ang "*",
pero pinaghiwalay mo sila.
· Di-wastong quantifier sa {,} sa regex; minarkahan ng <-- DITO sa m/%s/
(F) Ang pattern ay mukhang isang {min,max} quantifier, ngunit ang min o max ay hindi maaaring
na-parse bilang isang wastong numero: alinman ito ay may mga nangungunang zero, o ito ay kumakatawan sa masyadong malaki a
numero upang makayanan. Ang <-- HERE ay nagpapakita kung saan sa regular na expression ang problema
ay nadiskubre. Tingnan ang perlre.
· Ang '%s' ay isang hindi kilalang bound type sa regex
(F) Ginamit mo ang "\b{...}" o "\B{...}" at ang "..." ay hindi alam ni Perl. Ang kasalukuyan
ang mga valid ay ibinibigay sa "\b{}, \b, \B{}, \B" sa perlrebackslash.
· Nawawala o hindi natukoy na argumento na kailangan
(F) Sinubukan mong tawagan ang "require" nang walang argumento o may hindi natukoy na halaga bilang isang
argumento. Inaasahan ng "require" ang alinman sa isang pangalan ng package o isang file-specification bilang isang
argumento. Tingnan ang "kailangan" sa perlfunc.
Dati, nagbabala ang "require" na walang argumento o "undef" tungkol sa Null filename.
bago Babala
· Hindi na ginagamit ang \C sa regex
(D hindi na ginagamit) Ang klase ng character na "/\C/" ay hindi na ginagamit sa v5.20, at ngayon ay naglalabas ng
babala. Ito ay nilayon na ito ay magiging isang error sa v5.24. Ang klase ng karakter na ito
tumutugma sa isang solong byte kahit na ito ay lumitaw sa loob ng isang multi-byte na character, masira
encapsulation, at maaaring masira ang mga string ng UTF-8.
· Ang "%s" ay mas malinaw na nakasulat bilang "%s" sa regex; minarkahan ng <-- DITO sa m/%s/
(W regexp) (sa ilalim lamang ng "use re 'strict'" o sa loob ng "(?[...])")
Tinukoy mo ang isang character na may ibinigay na mas malinaw na paraan ng pagsulat nito, at alin
portable din sa mga platform na tumatakbo na may iba't ibang set ng character.
· Ang argumentong "%s" ay itinuturing bilang 0 sa pagtaas (++)
(W numeric) Ang ipinahiwatig na string ay ipinakain bilang argumento sa "++" na operator na
inaasahan ang alinman sa isang numero o isang string na tumutugma sa "/^[a-zA-Z]*[0-9]*\z/". Tingnan ang "Auto-
increment at Auto-deccrement" sa perlop para sa mga detalye.
· Pareho o wala sa dulo ng hanay ay dapat na Unicode sa regex; minarkahan ng <-- DITO sa m/%s/
(W regexp) (sa ilalim lamang ng "use re 'strict'" o sa loob ng "(?[...])")
Sa isang naka-bracket na klase ng character sa isang regular na pattern ng expression, mayroon kang isang hanay kung saan
may eksaktong isang dulo nito na tinukoy gamit ang "\N{}", at ang kabilang dulo ay tinukoy gamit
isang non-portable na mekanismo. Tinatrato ng Perl ang range bilang isang Unicode range, iyon ay, lahat ng
ang mga character sa loob nito ay itinuturing na mga Unicode na character, at maaaring
iba't ibang mga punto ng code sa ilang platform na pinapatakbo ng Perl. Halimbawa, "[\N{U+06}-\x08]"
ay itinuturing na parang sinabi mo sa halip na "[\N{U+06}-\N{U+08}]", iyon ay tumutugma sa
mga character na ang mga punto ng code sa Unicode ay 6, 7, at 8. Ngunit ang "\x08" na iyon ay maaaring
ipahiwatig na iba ang ibig mong sabihin, kaya tumaas ang babala.
· Hindi magawa ang %s("%s") sa lokal na hindi UTF-8; nalutas sa "%s".
(W locale) Ikaw ay 1) tumatakbo sa ilalim ng ""use locale""; 2) ang kasalukuyang lokal ay hindi a
UTF-8 isa; 3) sinubukan mong gawin ang itinalagang operasyon ng pagbabago ng kaso sa tinukoy
Unicode character; at 4) ang resulta ng operasyong ito ay paghaluin ang Unicode at locale
mga tuntunin, na malamang na magkasalungat.
Ang kategorya ng mga babala na "locale" ay bago.
· Ang const ay eksperimental
(S experimental::const_attr) Ang attribute na "const" ay experimental. Kung gusto mo
gamitin ang feature, huwag paganahin ang babala na may "walang babala 'experimental::const_attr'",
ngunit alamin na sa paggawa nito ay nasa panganib ka na ang iyong code ay maaaring masira sa hinaharap
Perl na bersyon.
· Nabigo ang gmtime(%f).
(W overflow) Tinawag mo ang "gmtime" na may numerong hindi nito kayang hawakan: masyadong malaki,
masyadong maliit, o NaN. Ang ibinalik na halaga ay "undef".
· Hexadecimal float: exponent overflow
(W overflow) Ang hexadecimal floating point ay may mas malaking exponent kaysa sa floating
mga sumusuporta sa punto.
· Hexadecimal float: exponent underflow
(W overflow) Ang hexadecimal floating point ay may mas maliit na exponent kaysa sa floating
mga sumusuporta sa punto.
· Hexadecimal float: overflow ng mantissa
(W overflow) Ang literal na hexadecimal floating point ay may mas maraming bit sa mantissa (ang
bahagi sa pagitan ng "0x" at ng exponent, na kilala rin bilang fraction o ang significand)
kaysa sa sinusuportahan ng floating point.
· Hexadecimal float: pagkawala ng katumpakan
(W overflow) Ang hexadecimal floating point ay may panloob na mas maraming digit kaysa sa maaari
output. Ito ay maaaring sanhi ng hindi sinusuportahang mahabang double format, o ng 64-bit integer
hindi magagamit (kinakailangan upang makuha ang mga digit sa ilalim ng ilang mga pagsasaayos).
· Maaaring hindi gumana nang maayos ang lokal na '%s'.%s
(W locale) Ginagamit mo ang pinangalanang locale, na hindi UTF-8, at aling perl
ay natukoy na hindi ganap na tugma sa kung ano ang maaari nitong hawakan. Ang pangalawang %s ay nagbibigay ng a
dahilan.
Ang kategorya ng mga babala na "locale" ay bago.
· nabigo ang localtime(%f).
(W overflow) Tinawag mo ang "localtime" na may numerong hindi nito kayang hawakan: masyadong malaki,
masyadong maliit, o NaN. Ang ibinalik na halaga ay "undef".
· Walang ginagawa ang negatibong bilang ng pag-uulit
(W numeric) Sinubukan mong isagawa ang "x" na operator ng pag-uulit nang mas kaunti sa 0 beses, na
walang saysay.
· NO-BREAK SPACE sa isang charnames alias kahulugan ay hindi na ginagamit
(D hindi na ginagamit) Tinukoy mo ang isang pangalan ng character na naglalaman ng no-break space
karakter. Baguhin ito sa isang regular na espasyo. Karaniwan ang mga pangalang ito ay tinukoy sa
":alias" import argument sa "gumamit ng mga charnames", ngunit maaari silang tukuyin ng isang tagasalin
naka-install sa $^H{charnames}. Tingnan ang "CUSTOM ALIASES" sa mga charnames.
· Walang magagawa ang non-finite repeat count
(W numeric) Sinubukan mong isagawa ang "x" repetition operator na "Inf" (o "-Inf") o NaN
beses, na hindi makatwiran.
· PerlIO layer ':win32' ay eksperimental
(S experimental::win32_perlio) Ang ":win32" PerlIO layer ay experimental. Kung gusto mo
upang kunin ang panganib na gamitin ang layer na ito, huwag paganahin ang babalang ito:
walang babala "experimental::win32_perlio";
· Ang mga saklaw ng ASCII printable ay dapat na ilang subset ng "0-9", "AZ", o "az" sa regex;
minarkahan ng <-- DITO sa m/%s/
(W regexp) (sa ilalim lamang ng "use re 'strict'" o sa loob ng "(?[...])")
Ang mas mahigpit na mga panuntunan ay nakakatulong upang mahanap ang mga typo at iba pang mga error. Marahil ay hindi mo man lang sinasadya a
range dito, kung ang "-" ay sinadya upang maging ibang karakter, o dapat ay
nakatakas (tulad ng "\-"). Kung nilayon mo nga ang isang saklaw, ang ginamit ay hindi portable
sa pagitan ng mga platform ng ASCII at EBCDIC, at walang malinaw na kahulugan sa isang kaswal
reader.
[3-7] # OK; Obvious at portable
[dg] # OK; Obvious at portable
[AY] # OK; Obvious at portable
[Az] # MALI; Hindi portable; hindi malinaw kung ano ang ibig sabihin
[aZ] # MALI; Hindi portable; hindi malinaw kung ano ang ibig sabihin
[%-.] # MALI; Hindi portable; hindi malinaw kung ano ang ibig sabihin
[\x41-Z] # MALI; Hindi portable; hindi halata sa hindi geek
(Maaari mong pilitin ang portability sa pamamagitan ng pagtukoy ng isang Unicode range, na nangangahulugang ang
ang mga endpoint ay tinukoy ng "\N{...}", ngunit maaaring hindi pa rin halata ang kahulugan.) Ang
Ang mas mahigpit na mga panuntunan ay nangangailangan ng mga saklaw na nagsisimula o huminto sa isang ASCII na character na
hindi isang kontrol ang lahat ng kanilang mga endpoint ay isang literal na karakter, at hindi ilang pagtakas
sequence (tulad ng "\x41"), at ang mga hanay ay dapat na lahat ng digit, o lahat ng malalaking titik,
o lahat ng maliliit na titik.
· Ang mga hanay ng mga digit ay dapat mula sa parehong pangkat sa regex; minarkahan ng <-- DITO sa m/%s/
(W regexp) (sa ilalim lamang ng "use re 'strict'" o sa loob ng "(?[...])")
Ang mas mahigpit na mga panuntunan ay nakakatulong upang mahanap ang mga typo at iba pang mga error. Nagsama ka ng range, at sa
kahit isa sa mga end point ay isang decimal digit. Sa ilalim ng mas mahigpit na mga patakaran, kapag ito
mangyayari, ang parehong mga end point ay dapat na mga digit sa parehong pangkat ng 10 magkakasunod na digit.
· Kalabisan na argumento sa %s
(W redundant) Tumawag ka ng function na may mas maraming argumento kaysa sa kinakailangan, gaya ng ipinahiwatig
sa pamamagitan ng impormasyon sa loob ng iba pang mga argumentong ibinigay mo (hal. isang printf format). Kasalukuyan
ilalabas lamang kapag ang isang printf-type na format ay nangangailangan ng mas kaunting mga argumento kaysa sa ibinigay,
ngunit maaaring magamit sa hinaharap para sa hal "pack" sa perlfunc.
Ang kategorya ng mga babala na "kalabisan" ay bago. Tingnan din ang [perl #121025]
.
· Ang listahan ng kapalit ay mas mahaba kaysa sa listahan ng paghahanap
Ito ay hindi isang bagong diagnostic, ngunit sa mga naunang release ay hindi sinasadyang naipakita
kung ang transliterasyon ay naglalaman ng malalawak na karakter. Ito ay naayos na ngayon, upang maaari mong
tingnan ang diagnostic na ito sa mga lugar kung saan dati ay hindi mo (ngunit mayroon).
· Ang paggamit ng \b{} para sa lokal na hindi UTF-8 ay mali. Ipagpalagay na isang lokal na UTF-8
(W locale) Tinutugma mo ang isang regular na expression gamit ang mga panuntunan sa lokal, at isang Unicode
ang hangganan ay itinutugma, ngunit ang lokal ay hindi isang Unicode. Hindi ito gumagawa
kahulugan. Magpapatuloy ang Perl, sa pag-aakalang isang lokal na Unicode (UTF-8), ngunit maaari ang mga resulta
well maging mali maliban kung ang lokal ay nangyayari na ISO-8859-1 (Latin1) kung saan ito
ang mensahe ay huwad at maaaring balewalain.
Ang kategorya ng mga babala na "locale" ay bago.
· Paggamit ng /u para sa '%s' sa halip na /%s sa regex; minarkahan ng <-- DITO sa m/%s/
(W regexp) Gumamit ka ng hangganan ng Unicode ("\b{...}" o "\B{...}") sa isang bahagi ng isang
regular na expression kung saan ang mga character set modifier na "/a" o "/aa" ay may bisa.
Ang dalawang modifier na ito ay nagpapahiwatig ng interpretasyon ng ASCII, at hindi ito makatuwiran
isang kahulugan ng Unicode. Ang nabuong regular na expression ay mag-compile upang ang
boundary ay gumagamit ng lahat ng Unicode. Walang ibang bahagi ng regular na expression ang apektado.
· Ang bitwise na feature ay experimental
(S experimental::bitwise) Ang babalang ito ay inilalabas kung gumagamit ka ng mga bitwise operator ("& | ^
~&. |. ^. ~.") na may naka-enable na feature na "bitwise." Pigilan lang ang babala kung
gusto mong gamitin ang feature, ngunit alam mong sa paggawa nito ay nasa panganib ka ng
gamit ang isang pang-eksperimentong tampok na maaaring magbago o maalis sa hinaharap na bersyon ng Perl:
walang babala "experimental::bitwise";
gamitin ang tampok na "bitwise";
$x |.= $y;
· Ang hindi nakaligtas na kaliwang brace sa regex ay hindi na ginagamit, ipinasa sa regex; minarkahan ng <--
DITO sa m/%s/
(D deprecated, regexp) Gumamit ka ng literal na "{" na character sa isang regular na expression
pattern. Dapat mong baguhin upang gamitin ang "\{" sa halip, dahil ang hinaharap na bersyon ng Perl
(pansamantalang v5.26) ay ituturing itong isang syntax error. Kung ang pattern
Ang mga delimiter ay mga brace din, ang anumang tumutugmang kanang brace ("}") ay dapat ding i-escape
iwasang malito ang parser, halimbawa,
qr{abc\{def\}ghi}
· Ang paggamit ng mga literal na hindi graphic na character sa mga variable na pangalan ay hindi na ginagamit
(D hindi na ginagamit) Paggamit ng literal na hindi graphic (kabilang ang kontrol) na mga character sa pinagmulan
upang sumangguni sa ^FOO ang mga variable, tulad ng $^X at "${^GLOBAL_PHASE}" ay hindi na ginagamit.
· Walang kwentang paggamit ng attribute na "const"
(W misc) Walang epekto ang attribute na "const" maliban sa mga anonymous na prototype ng pagsasara.
Inilapat mo ito sa isang subroutine sa pamamagitan ng attributes.pm. Ito ay kapaki-pakinabang lamang sa loob ng isang
tagapangasiwa ng katangian para sa isang hindi kilalang subroutine.
· Walang silbi ang paggamit ng /d modifier sa transliteration operator
Ito ay hindi isang bagong diagnostic, ngunit sa mga naunang release ay hindi sinasadyang naipakita
kung ang transliterasyon ay naglalaman ng malalawak na karakter. Ito ay naayos na ngayon, upang maaari mong
tingnan ang diagnostic na ito sa mga lugar kung saan dati ay hindi mo (ngunit mayroon).
· Ang "gamitin ang 'mahigpit'" ay pang-eksperimento
(S experimental::re_strict) Ang mga bagay na naiiba kapag regular na expression
pattern ay pinagsama-sama sa ilalim ng 'mahigpit' ay napapailalim sa pagbabago sa hinaharap Perl release sa
hindi magkatugma na mga paraan; mayroon ding mga panukala na baguhin kung paano paganahin ang mahigpit na pagsusuri
sa halip na gamitin ang subpragma na ito. Nangangahulugan ito na ang isang pattern na pinagsama-sama ngayon ay maaaring
hindi sa hinaharap na paglabas ng Perl. Ang babalang ito ay para alertuhan ka sa panganib na iyon.
· Babala: hindi maisara nang maayos ang filehandle: %s
Babala: hindi maisara nang maayos ang filehandle %s: %s
(S io) Dati, tahimik na binalewala ni perl ang anumang mga error kapag gumagawa ng implicit na pagsasara ng a
filehandle, ibig sabihin kung saan ang bilang ng sanggunian ng filehandle ay umabot sa zero at ang
ang code ng user ay hindi pa tinatawag na "close()"; hal
{
buksan ang aking $fh, '>', $file o mamatay "bukas: '$file': $!\n";
i-print ang $fh, $data o mamatay;
} # implicit malapit dito
Sa isang sitwasyon tulad ng disk na puno, dahil sa buffering, ang error ay maaari lamang makita
sa panahon ng huling pagsasara, kaya ang hindi pagsuri sa resulta ng pagsasara ay mapanganib.
Kaya nagbabala ngayon si perl sa mga ganitong sitwasyon.
· Malawak na character (U+%X) sa %s
(W locale) Habang nasa isang single-byte locale (ibig sabihin, isang hindi UTF-8), isang multi-byte
character ay nakatagpo. Itinuturing ni Perl na ang character na ito ay ang tinukoy na Unicode
code point. Ang pagsasama-sama ng mga lokal na hindi UTF-8 at Unicode ay mapanganib. Halos tiyak
ang ilang mga character ay magkakaroon ng dalawang magkaibang representasyon. Halimbawa, sa ISO
8859-7 (Greek) na lokal, ang code point na 0xC3 ay kumakatawan sa isang Capital Gamma. Ngunit gayon din
ay 0x393. Gagawin nitong hindi mapagkakatiwalaan ang mga paghahambing ng string.
Malamang na kailangan mong malaman kung paano nahalo ang multi-byte na character na ito sa iyong
single-byte locale (o marahil naisip mo na mayroon kang lokal na UTF-8, ngunit ang Perl
hindi sumasang-ayon).
Ang kategorya ng mga babala na "locale" ay bago.
Mga Pagbabago sa Nabubuhay Diagnostics
· Ang <> ay dapat na mga panipi
Ang babalang ito ay binago sa <> sa require-statement ay dapat na mga quote upang gawin ang
isyu na mas makikilala.
· Ang argumentong "%s" ay hindi numeric%s
Ang perldiag entry para sa babalang ito ay nagdagdag ng naglilinaw na tala na ito:
Tandaan na para sa Inf at NaN (infinity at hindi-isang-numero) ang
Ang kahulugan ng "numeric" ay medyo hindi karaniwan: ang mga string mismo
(tulad ng "Inf") ay itinuturing na numero, at anumang sumusunod sa kanila ay
itinuturing na hindi numeric.
· Ang pandaigdigang simbolo na "%s" ay nangangailangan ng tahasang pangalan ng package
Ang mensaheng ito ay may '(nakalimutan mo bang ideklara ang "aking %s"?)' na nakadugtong dito, upang gawin itong
mas nakakatulong sa mga bagong programmer ng Perl. [perl #121638]
· Ang '"my" variable &foo::bar ay hindi maaaring nasa isang package' ay na-reword para sabihing 'subroutine'
sa halip na 'variable'.
· \N{} sa klase ng character na limitado sa isang character sa regex; minarkahan ng <-- DITO sa
MS/
Ang mensaheng ito ay nagkaroon katangian klase binago sa inverted katangian klase or as a saklaw
end-point is upang ipakita ang mga pagpapabuti sa "qr/[\N{named sequence}]/" (tingnan sa ilalim
"Mga Piniling Pag-aayos ng Bug").
· pagkasindak: frexp
Ang mensaheng ito ay may ': %f' na nakadugtong dito, upang ipakita kung ano ang nakakasakit na floating point
numero ay.
· Posible karapatan sa pangunguna problema on bitwise %c opereytor reworded bilang Posibleng pangunahan
problema sa bitwise %s operator.
· Hindi matagumpay na %s sa filename na naglalaman ng newline
Ang babalang ito ay ginagawa lamang kapag ang bagong linya ay nasa dulo ng filename.
· Ang "Variable %s will not stay shared" ay binago upang sabihing "Subroutine" kapag ito ay
talagang isang lexical sub na hindi mananatiling nakabahagi.
· Ang variable na haba ng hitsura sa likod ay hindi ipinatupad sa regex m/%s/
Ang perldiag entry para sa babalang ito ay may idinagdag na impormasyon tungkol sa pag-uugali ng Unicode.
Tanda Pag-aalis
· "Ang hindi maliwanag na paggamit ng -foo ay nalutas bilang -&foo()"
Talagang walang kalabuan dito, at ito ay humahadlang sa paggamit ng mga negated constants;
hal, "-Inf".
· "Ang constant ay hindi isang FOO reference"
Compile-time checking ng pare-pareho ang dereferencing (hal, "my_constant->()") ay naging
inalis, dahil hindi nito isinasaalang-alang ang labis na pagkarga. [perl #69456]
[perl #69456]
Gamit Mga Pagbabago
find2perl, s2p at a2p pag-aalis
· Ang x2p/ ang direktoryo ay tinanggal mula sa Perl core.
Inaalis nito ang find2perl, s2p at a2p. Lahat sila ay inilabas sa CPAN bilang hiwalay
mga pamamahagi ("App::find2perl", "App::s2p", "App::a2p").
h2ph
· h2ph ngayon ay humahawak ng hexadecimal constants sa mga paunang natukoy na kahulugan ng macro ng compiler,
bilang nakikita sa $Config{cppsymbols}. [perl #123784]
.
encgues
· Hindi na nakadepende sa mga non-core na module.
Configuration at Pagtitipon
· I-configure ang ngayon ay sumusuri para sa "lrintl()", "lroundl()", "llrintl()", at "llroundl()".
· I-configure ang na may "-Dmksymlinks" ay dapat na mas mabilis. [perl #122002]
.
· Ang "pthreads" at "cl" na mga aklatan ay mali-link bilang default kung naroroon. Ito ay nagpapahintulot
XS module na nangangailangan ng threading upang gumana sa mga non-threaded perls. Tandaan na kailangan mo
ipasa pa rin ang "-Dusethreads" kung gusto mo ng sinulid na perl.
· Upang makakuha ng higit na katumpakan at saklaw para sa mga numero ng floating point ay maaari na ngayong gamitin ng isa ang GCC
quadmath library na nagpapatupad ng quadruple precision floating point na mga numero sa
x86 at IA-64 na mga platform. Tingnan mo INSTALL para sa mga detalye.
· Ang MurmurHash64A at MurmurHash64B ay maaari na ngayong i-configure bilang panloob na hash function.
· Sinusuportahan na ngayon ng "make test.valgrind" ang parallel testing.
Halimbawa:
TEST_JOBS=9 gumawa ng pagsubok.valgrind
Tingnan ang "valgrind" sa perlhacktips para sa higit pang impormasyon.
[perl #121431]
· Ang opsyon sa pagbuo ng MAD (Misc Attribute Dekorasyon) ay tinanggal
Ito ay isang hindi pinapanatili na pagtatangka sa pagpapanatili ng Perl parse tree nang mas matapat
na ang awtomatikong pag-convert ng Perl 5 sa Perl 6 ay mas madali sana.
Ang pagpipiliang configuration ng build-time na ito ay hindi napanatili sa loob ng maraming taon, at malamang
seryosong naghiwalay sa magkabilang panig ng Perl 5 at Perl 6.
· Available ang isang bagong flag ng compilation, "-DPERL_OP_PARENT." Para sa mga detalye, tingnan ang
talakayan sa ibaba sa "Mga Panloob na Pagbabago".
· Hindi na sinusubukan ng Pathtools na i-load ang XS sa miniperl. Pinapabilis nito ang pagbuo ng perl
bahagyang.
Pagsubok
· t/porting/re_context.t ay naidagdag upang subukan na ang utf8 at ang mga dependency nito ay ginagamit lamang
ang subset ng "$1..$n" capture vars na "Perl_save_re_context()" ay hard-coded
localize, dahil ang function na iyon ay walang mahusay na paraan ng pagtukoy sa runtime kung ano
vars para i-localize.
· Ang mga pagsubok para sa mga isyu sa pagganap ay naidagdag sa file t/perf/taint.t.
· Ang ilang mga regular na pagsusulit sa pagpapahayag ay isinulat sa paraang tatakbo ang mga ito nang napakabagal
kung masira ang ilang partikular na pag-optimize. Ang mga pagsubok na ito ay inilipat sa mga bagong file,
t/re/speed.t at t/re/speed_thr.t, at pinapatakbo gamit ang isang "watchdog()".
· Pinahihintulutan na ngayon ng "test.pl" ang "plan skip_all => $reason", upang gawin itong mas tugma sa
"Pagsubok:: Higit pa".
· Isang bagong test script, op/infnan.t, ay naidagdag upang subukan kung gumagana ang infinity at NaN
tama. Tingnan ang "Infinity at NaN (not-a-number) handling pinabuting".
Platform Suporta
Muling Nabago Platform
Gumagana muli ang mga platform ng IRIX at Tru64.
Nananatili ang ilang mga pagkabigo sa "gumawa ng pagsubok": [perl #123977]
at [perl #123977]
para sa IRIX; [perl #125298]
, [cpan #124212]
, at [cpan #99605]
para sa Tru104836.
z/OS na tumatakbo sa EBCDIC Code Page 1047
Gumagana na ngayon ang core perl sa platform na ito ng EBCDIC. Ang mga naunang perls ay gumana rin, ngunit, kahit na
kahit na ang suporta ay hindi opisyal na binawi, ang mga kamakailang perl ay hindi bubuo at tatakbo
mabuti. Gagana ang Perl 5.20, ngunit mayroong maraming mga bug na naayos na ngayon. Maraming CPAN
nabigo pa rin ang mga module na ipinapadala kasama ng Perl sa mga pagsubok, kabilang ang "Pod::Simple". Gayunpaman ang
dapat gumana ang bersyon ng "Pod::Simple" na kasalukuyang nasa CPAN; ito ay naayos huli na sa
isama sa Perl 5.22. Ginagawa ang trabaho para ayusin ang marami sa mga sirang CPAN module,
na malamang na mai-install sa CPAN kapag nakumpleto, nang sa gayon ay hindi mo na kailangang
maghintay hanggang Perl 5.24 upang makakuha ng gumaganang bersyon.
Ipinagpatuloy Platform
NeXTSTEP/OPENSTEP
Ang NeXTSTEP ay isang proprietary operating system na kasama ng mga workstation ng NeXT sa
maaga hanggang kalagitnaan ng 90s; Ang OPENSTEP ay isang detalye ng API na nagbigay ng mala-NeXTSTEP
kapaligiran sa isang non-NeXTSTEP system. Parehong matagal nang patay, kaya suporta para sa pagtatayo
Inalis na ang Perl sa kanila.
Platform-Tukoy Mga Tala
EBCDIC
Espesyal na pangangasiwa ay kinakailangan ng perl interpreter sa EBCDIC platform upang makakuha
"qr/[ij]/" para tumugma lang sa "i" at "j", dahil may 7 character sa pagitan ng code
puntos para sa "i" at "j". Ang espesyal na pangangasiwa na ito ay ginamit lamang noong magkabilang dulo ng
ang saklaw ay literal. Ngayon ay ginagamit din ito kung alinman sa mga form na "\N{...}" para sa
ang pagtukoy ng isang character sa pamamagitan ng pangalan o Unicode code point ay ginagamit sa halip na literal.
Tingnan ang "Mga Saklaw ng Character" sa perlrecharclass.
HP-UX
Ang archname ngayon ay nakikilala ang use64bitint mula sa use64bitall.
Android
Ang suporta sa Build ay pinahusay para sa cross-compile sa pangkalahatan at para sa Android sa
partikular na.
VMS
· Kapag nag-spawning ng subprocess nang hindi naghihintay, ang return value ay tama na ngayon
PID.
· Ayusin ang isang prototype upang hindi mabigo ang pag-link sa ilalim ng VMS C++ compiler.
· Ang "finite", "finitel", at "isfinite" detection ay naidagdag sa "configure.com",
Ang pangangasiwa sa kapaligiran ay nagkaroon ng ilang maliliit na pagbabago, at isang pag-aayos para sa legacy na feature
pagsuri sa katayuan.
Win32
· miniperl.exe ay binuo na ngayon gamit ang "-fno-strict-aliasing", na nagpapahintulot sa 64-bit na mga build sa
kumpleto sa GCC 4.8. [perl #123976]
· Ang "nmake minitest" ay gumagana na ngayon sa Win32. Dahil sa mga isyu sa dependency na kailangan mong buuin
"nmake test-prep" muna, at isang maliit na bilang ng mga pagsubok ang nabigo. [perl #123394]
· Ang Perl ay maaari na ngayong itayo sa C++ mode sa Windows sa pamamagitan ng pagtatakda ng makefile macro
"USE_CPLUSPLUS" sa value na "define".
· Ang form ng listahan ng piped open ay ipinatupad para sa Win32. Tandaan: hindi katulad ng "system
LIST" hindi ito bumabalik sa shell. [perl #121159]
· Bagong "DebugSymbols" at "DebugFull" na mga opsyon sa pagsasaayos na idinagdag sa Windows
makefiles.
· Dati, pag-compile ng mga XS module (kabilang ang mga CPAN) gamit ang Visual C++ para sa Win64
nagresulta sa humigit-kumulang isang dosenang mga babala bawat file mula sa hv_func.h. Ang mga babalang ito ay may
pinatahimik.
· Ang suporta para sa pagbuo nang walang PerlIO ay inalis mula sa Windows makefiles.
Ang mga non-PerlIO build ay hindi na ginagamit sa Perl 5.18.0 at hindi na
suportado ng I-configure ang sa mga sistema ng POSIX.
· Sa pagitan ng 2 at 6 na millisecond at pitong I/O na tawag ay nai-save sa bawat pagtatangka
magbukas ng perl module para sa bawat path sa @INC.
· Ang mga Intel C build ay palaging binuo nang naka-on ang C99 mode.
· Ginagamit na ngayon ang %I64d sa halip na %lld para sa MinGW.
· Sa pang-eksperimentong layer na ":win32", isang pag-crash sa "open" ang naayos. Pagbukas din
/ dev / null (na gumagana sa ilalim ng default na ":unix" layer ng Win32 Perl) ay ipinatupad
para sa ":win32". [perl #122224]
· Isang bagong makefile na opsyon, "USE_LONG_DOUBLE", ay naidagdag sa Windows dmake
makefile para sa gcc build lang. Itakda ito sa "define" kung gusto mong gumamit ng mahaba ang perl
nagdodoble upang magbigay ng higit na katumpakan at saklaw para sa mga numero ng floating point.
OpenBSD
Sa OpenBSD, ang Perl ay magde-default na ngayon sa paggamit ng system na "malloc" dahil sa seguridad
mga tampok na ibinibigay nito. Ang sariling malloc wrapper ng Perl ay ginagamit mula noong v5.14 dahil sa
mga dahilan ng pagganap, ngunit naniniwala ang proyekto ng OpenBSD na sulit ang tradeoff at
mas gusto na ang mga user na nangangailangan ng bilis ay partikular na humingi nito.
[perl #122000] .
Solaris
· Hinahanap namin ngayon ang Sun Studio compiler sa pareho /opt/solstudio* at
/opt/solarisstudio*.
· Bumubuo sa Solaris 10 na may "-Dusedtrace" ay mabibigo nang maaga dahil hindi sumunod ang make
ipinahiwatig na mga dependency upang bumuo ng "perldtrace.h". Nagdagdag ng tahasang dependency sa
"depende". [perl #120120]
· Nalinis na ang mga opsyon sa C99; hanapin ang mga pahiwatig para sa "solstudio" pati na rin
"SUNWspro"; at suporta para sa katutubong "setenv" ay naidagdag.
Panloob Mga Pagbabago
· Ang pang-eksperimentong suporta ay idinagdag upang payagan ang mga op sa optree na mahanap ang kanilang magulang,
kung mayroon man. Ito ay pinagana ng hindi default na opsyon sa pagbuo na "-DPERL_OP_PARENT". Ito ay
Iniisip na sa kalaunan ay mapapagana ito bilang default, kaya XS code which
direktang ina-access ang field ng "op_sibling" ng ops ay dapat na ma-update sa hinaharap-
napatunayan.
Sa mga build na "PERL_OP_PARENT", ang field na "op_sibling" ay pinalitan ng pangalan na "op_sibparent" at
isang bagong bandila, "op_moresib", idinagdag. Sa huling op sa isang magkakapatid na chain, ang "op_moresib" ay
false at "op_sibparent" ay tumuturo sa magulang (kung mayroon man) sa halip na maging "NULL".
Upang gawing malinaw na gumagana ang umiiral na code, gumagamit man ng "PERL_OP_PARENT" o hindi, a
bilang ng mga bagong macro at function ay naidagdag na dapat gamitin, sa halip na
direktang minamanipula ang "op_sibling".
Para sa kaso ng pagbabasa lamang ng "op_sibling" upang matukoy ang susunod na kapatid, dalawang bago
Ang mga macro ay naidagdag. Isang simpleng pag-scan sa isang kapatid na kadena tulad nito:
para kay (; kid->op_sibling; kid = kid->op_sibling) { ... }
dapat na isulat ngayon bilang:
para kay (; OpHAS_SIBLING(bata); bata = OpSIBLING(bata)) { ... }
Para sa pagpapalit ng mga optree, isang pangkalahatang layunin na function na "op_sibling_splice()" ay idinagdag,
na nagbibigay-daan para sa pagmamanipula ng isang hanay ng mga kapatid na ops. Sa pamamagitan ng pagkakatulad sa Perl
function na "splice()", binibigyang-daan ka nitong putulin ang zero o higit pang mga ops mula sa isang sibling chain
at palitan ang mga ito ng zero o higit pang mga bagong ops. Malinaw nitong pinangangasiwaan ang lahat ng pag-update
ng kapatid, magulang, op_last pointer atbp.
Kung kailangan mong manipulahin ang mga ops sa mas mababang antas, pagkatapos ay tatlong bagong macro,
Ang "OpMORESIB_set", "OpLASTSIB_set" at "OpMAYBESIB_set" ay nilayon na maging isang mababang antas
portable na paraan upang itakda ang "op_sibling" / "op_sibparent" habang ina-update din ang "op_moresib".
Ang una ay nagtatakda ng kapatid na pointer sa isang bagong kapatid, ang pangalawa ay ginagawang ang op ang huli
kapatid, at ang pangatlo ay may kondisyong ginagawa ang una o pangalawang aksyon. Tandaan na
hindi tulad ng "op_sibling_splice()" ang mga macro na ito ay hindi nagpapanatili ng pare-pareho sa magulang sa
Parehong oras (hal sa pamamagitan ng pag-update ng "op_first" at "op_last" kung saan naaangkop).
Ang isang C-level na "Perl_op_parent()" na function at isang Perl-level na "B::OP::parent()" na paraan ay may
naidagdag. Ang C function ay umiiral lamang sa ilalim ng "PERL_OP_PARENT" na mga build (gamit ito ay
build-time na error sa vanilla perls). "B::OP::parent()" ay palaging umiiral, ngunit sa isang vanilla
build ito ay palaging nagbabalik ng "NULL". Sa ilalim ng "PERL_OP_PARENT", ibinabalik nila ang magulang ng
kasalukuyang op, kung mayroon man. Ang variable na $B::OP::does_parent ay nagbibigay-daan sa iyo upang matukoy kung
Sinusuportahan ng "B" ang pagkuha ng magulang ng isang op.
Ang "PERL_OP_PARENT" ay ipinakilala noong 5.21.2, ngunit malaki ang pagbabago sa interface
sa 5.21.11. Kung na-update mo ang iyong code bago ang mga pagbabago sa 5.21.11, maaaring kailanganin nito
karagdagang rebisyon. Ang mga pangunahing pagbabago pagkatapos ng 5.21.2 ay:
· Ang "OP_SIBLING" at "OP_HAS_SIBLING" na macro ay pinalitan ng pangalan na "OpSIBLING" at
"OpHAS_SIBLING" para sa pagkakapare-pareho sa iba pang mga op-manipulating na macro.
· Ang field na "op_lastsib" ay pinalitan ng pangalan na "op_moresib", at ang kahulugan nito ay baligtad.
· Ang macro na "OpSIBLING_set" ay inalis, at pinalitan ng
"OpMORESIB_set" et al.
· Ang function na "op_sibling_splice()" ay tumatanggap na ngayon ng isang null na argumentong "magulang" kung saan ang
hindi naaapektuhan ng splicing ang una o huling ops sa sibling chain
· Ang mga macro ay nilikha upang payagan ang XS code na mas mahusay na manipulahin ang lokal na POSIX
kategoryang "LC_NUMERIC". Tingnan ang "Mga function at macro na nauugnay sa lokal" sa perlapi.
· Ang nakaraang "atoi" et al Ang pagpapalit na function, "grok_atou", ay napalitan na ngayon
sa pamamagitan ng "grok_atoUV". Tingnan ang perlclib para sa mga detalye.
· Isang bagong function, "Perl_sv_get_backrefs()", ay idinagdag na nagpapahintulot sa iyo na makuha ang
mahinang mga sanggunian, kung mayroon man, na tumuturo sa isang SV.
· Ang function na "screaminstr()" ay tinanggal. Bagama't minarkahan bilang pampublikong API, ito ay
hindi dokumentado at walang paggamit sa mga module ng CPAN. Ang pagtawag dito ay nakamamatay mula noong 5.17.0.
· Ang mga function na "newDEFSVOP()", "block_start()", "block_end()" at "intro_my()" ay
naidagdag sa API.
· Ang panloob na function na "convert" sa op.c ay pinalitan ng pangalan na "op_convert_list" at idinagdag
sa API.
· Hindi na ipinagbabawal ng function na "sv_magic()" ang "ext" magic sa mga read-only na value. Pagkatapos
lahat, hindi alam ni perl kung babaguhin ng custom magic ang SV o hindi. [perl
#123103] .
· Ang pag-access sa "CvPADLIST" sa perlapi sa isang XSUB ay ipinagbabawal na ngayon.
Ang field na "CvPADLIST" ay muling ginamit para sa ibang panloob na layunin para sa mga XSUB. Kaya
sa partikular, hindi ka na makakaasa na ito ay NULL bilang isang pagsubok kung ang isang CV ay isang
XSUB. Gamitin ang "CvISXSUB()" sa halip.
· Ang mga SV na may uri na "SVt_NV" ay minsan ay walang katawan kapag ang build configuration at
pinapayagan ito ng platform: partikular, kapag "sizeof(NV) <= sizeof(IV)". Ang ibig sabihin ng "walang katawan".
na ang halaga ng NV ay direktang naka-imbak sa ulo ng isang SV, nang hindi nangangailangan ng a
hiwalay na katawan na ilalaan. Ginamit na ang trick na ito para sa mga IV mula noong 5.9.2
(bagaman sa kaso ng mga IV, ito ay palaging ginagamit, anuman ang platform at build
pagsasaayos).
· Ang $DB::single, $DB::signal at $DB::trace variable ay mayroon na ngayong set- and get-magic na
Iniimbak ang kanilang mga halaga bilang mga IV, at ang mga IV na iyon ay ginagamit kapag sinusubukan ang kanilang mga halaga sa
"pp_dbstate()". Pinipigilan nito ang perl mula sa paulit-ulit na walang hanggan kung ang isang overloaded na bagay
ay itinalaga sa alinman sa mga variable na iyon. [perl #122445]
.
· "Perl_tmps_grow()", na minarkahan bilang pampublikong API ngunit hindi dokumentado, ay
inalis mula sa pampublikong API. Ang pagbabagong ito ay hindi nakakaapekto sa XS code na gumagamit ng
"EXTEND_MORTAL" macro upang paunang pahabain ang mortal stack.
· Hindi na itinatakda o ginagamit ng mga internal ni Perl ang flag na "SVs_PADMY". Bumalik na ngayon ang "SvPADMY()".
ang isang tunay na halaga para sa anumang hindi namarkahang "PADTMP" at "SVs_PADMY" ay tinukoy na ngayon bilang 0.
· Ang mga macro na "SETsv" at "SETsvUN" ay tinanggal. Hindi na sila ginamit sa
core mula noong gumawa ng 6f1401dc2a limang taon na ang nakakaraan, at hindi nahanap na naroroon sa CPAN.
· Ang bit na "SvFAKE" (hindi ginagamit sa mga HV) ay hindi pormal na inireserba ni David Mitchell para sa hinaharap
magtrabaho sa vtables.
· Ang function na "sv_catpvn_flags()" ay tumatanggap ng "SV_CATBYTES" at "SV_CATUTF8" na mga flag, na
tukuyin kung ang nakadugtong na string ay bytes o UTF-8, ayon sa pagkakabanggit. (Ang mga watawat na ito ay may
sa katunayan ay naroroon na mula noong 5.16.0, ngunit dating hindi itinuturing na bahagi ng API.)
· Isang bagong klase ng opcode, "METHOP", ay ipinakilala. Nagtataglay ito ng impormasyong ginagamit sa
runtime upang mapabuti ang pagganap ng mga tawag sa class/object method.
Ang "OP_METHOD" at "OP_METHOD_NAMED" ay nagbago mula sa pagiging "UNOP/SVOP" patungo sa pagiging
"METHOP".
· Ang "cv_name()" ay isang bagong function ng API na maaaring maipasa sa isang CV o GV. Nagbabalik ito ng isang SV
naglalaman ng pangalan ng subroutine, para magamit sa mga diagnostic.
[perl #116735] [perl #116735]
· Ang "cv_set_call_checker_flags()" ay isang bagong function ng API na gumagana tulad ng
"cv_set_call_checker()", maliban na pinapayagan nito ang tumatawag na tukuyin kung ang tawag
Ang checker ay nangangailangan ng isang buong GV para sa pag-uulat ng pangalan ng subroutine, o kung maaari man
pumasa sa isang CV sa halip. Anumang halaga ang maipasa ay magiging katanggap-tanggap sa "cv_name()".
Ginagarantiyahan ng "cv_set_call_checker()" na magkakaroon ng GV, ngunit maaaring kailanganin nitong gumawa ng isa
on the fly, na hindi mabisa. [perl #116735]
· Ang "CvGV" (na hindi bahagi ng API) ay isa na ngayong mas kumplikadong macro, na maaaring tumawag ng a
function at reify ng isang GV. Para sa mga kaso kung saan ito ay ginamit bilang boolean,
Ang "CvHASGV" ay naidagdag, na magbabalik ng totoo para sa mga CV na may mga GV, ngunit
nang hindi nire-reify ang GV. Nagbabalik din ang "CvGV" ng GV ngayon para sa mga lexical na sub. [perl
#120441]
· Ang "sync_locale" sa perlapi function ay naidagdag sa pampublikong API. Pagbabago ng
Ang lokal na programa ay dapat na iwasan ng XS code. Gayunpaman, ang ilang mga hindi Perl
kailangang gawin ito ng mga aklatan na tinawag mula sa XS, gaya ng "Gtk". Kapag nangyari ito, kailangan ni Perl
upang masabihan na ang lokal ay nagbago. Gamitin ang function na ito upang gawin ito, bago bumalik
kay Perl.
· Ang mga pagtukoy at mga label para sa mga flag sa field na "op_private" ng mga OP ay awtomatikong-
nabuo mula sa data sa regen/op_private. Ang kapansin-pansing epekto nito ay ang ilan
ng flag output ng "Concise" ay maaaring bahagyang mag-iba, at ang flag output ng
Maaaring magkaiba ang "perl -Dx" (pareho silang gumagamit ng parehong hanay ng mga label ngayon). Gayundin,
Ang mga debugging build ay mayroon na ngayong bagong assertion sa "op_free()" upang matiyak na ang op ay hindi
magkaroon ng anumang hindi nakikilalang mga flag na nakatakda sa "op_private".
· Ang hindi na ginagamit na variable na "PL_sv_objcount" ay tinanggal.
· Sinusubukan na ngayon ng Perl na panatilihing nakatakda ang kategorya ng lokal na "LC_NUMERIC" sa "C" maliban sa paligid
mga operasyong nangangailangan nito na maitakda sa pinagbabatayan na lokal ng programa. Pinoprotektahan nito
ang maraming XS modules na hindi makayanan ang decimal radix character na hindi isang tuldok.
Bago ang release na ito, sinimulan ni Perl ang kategoryang ito sa "C", ngunit isang tawag sa
"POSIX::setlocale()" ay babaguhin ito. Ngayon, babaguhin ng naturang tawag ang pinagbabatayan
locale ng kategoryang "LC_NUMERIC" para sa programa, ngunit nalantad ang locale sa XS code
mananatiling "C". May mga bagong macro upang manipulahin ang LC_NUMERIC locale, kasama ang
"STORE_LC_NUMERIC_SET_TO_NEEDED" at "STORE_LC_NUMERIC_FORCE_TO_UNDERLYING". Tingnan mo
"Mga function at macro na nauugnay sa lokal" sa perlapi.
· Isang bagong macro na "isUTF8_CHAR" ang naisulat na mahusay na tumutukoy kung ang string
na ibinigay ng mga parameter nito ay nagsisimula sa isang mahusay na nabuong UTF-8 na naka-encode na character.
· Ang mga sumusunod na pribadong function ng API ay inalis ang kanilang context parameter:
"Perl_cast_ulong", "Perl_cast_i32", "Perl_cast_iv", "Perl_cast_uv",
"Perl_cv_const_sv", "Perl_mg_find", "Perl_mg_findext", "Perl_mg_magical",
"Perl_mini_mktime", "Perl_my_dirfd", "Perl_sv_backoff", "Perl_utf8_hop".
Tandaan na ang mga prefix-less na bersyon ng mga function na iyon na bahagi ng pampublikong API,
gaya ng "cast_i32()", mananatiling hindi naaapektuhan.
· Ang mga uri ng "PADNAME" at "PADNAMELIST" ay magkahiwalay na mga uri, at hindi na simple
mga alias para sa SV at AV. [perl #123223]
.
· Ang mga pangalan ng pad ay palaging UTF-8. Ang macro na "PadnameUTF8" ay palaging nagbabalik ng true.
Dati, ito ay epektibo na ang kaso, ngunit anumang suporta para sa dalawang magkaibang
Ang mga panloob na representasyon ng mga pangalan ng pad ay inalis na ngayon.
· Isang bagong op class, "UNOP_AUX", ay naidagdag. Ito ay isang subclass ng "UNOP" na may isang
Idinagdag ang field na "op_aux", na tumuturo sa isang hanay ng mga unyon ng UV, SV* atbp. Ito ay
nilayon para sa kung saan ang isang op ay kailangang mag-imbak ng higit pang data kaysa sa isang simpleng "op_sv" o anupaman.
Sa kasalukuyan, ang tanging opsyon ng ganitong uri ay "OP_MULTIDEREF" (tingnan ang susunod na item).
· Isang bagong op ang naidagdag, "OP_MULTIDEREF", na nagsasagawa ng isa o higit pang nested array at
hash lookup kung saan ang susi ay pare-pareho o simpleng variable. Halimbawa ang
expression na $a[0]{$k}[$i], na dating kinasasangkutan ng sampung "rv2Xv", "Xelem", "gvsv" at
Ang "const" ops ay ginagawa na ngayon ng isang "multideref" op. Kakayanin din nito ang "lokal",
"umiiral" at "tanggalin". Ang isang hindi simpleng index expression, tulad ng "[$i+1]" ay tapos pa rin
gamit ang "aelem"/"helem", at single-level array lookup na may maliit na constant index ay
tapos pa rin gamit ang "aelemfast".
Napiling Kulisap Pag-aayos
· Ang "close" ngayon ay nagtatakda ng $!
Kapag nangyari ang isang I/O error, ang katotohanan na nagkaroon ng error ay naitala sa
hawakan. "close" returns false para sa naturang handle. Dati, ang halaga ng $! gagawin
hindi tinatablan ng "close", kaya ang karaniwang convention ng pagsulat ng "close $fh or die $!" ginawa
hindi gumagana nang mapagkakatiwalaan. Ngayon ang handle ay nagtatala ng halaga ng $!, masyadong, at "close" restores
ito.
· Maaari na ngayong i-off ng "no re" ang lahat ng bagay na pinapagana ng "use re".
Dati, ang pagpapatakbo ng "no re" ay magpapasara lamang ng ilang bagay. Ngayon ay maaari nitong i-off ang lahat
ang mga bagay na pinagana. Halimbawa, ang tanging paraan upang ihinto ang pag-debug, kapag pinagana, ay ang
lumabas sa nakapaloob na bloke; naayos na ngayon.
· "pack("D", $x)" at "pack("F", $x)" ngayon ay zero ang padding sa x86 long double build.
Sa ilalim ng ilang mga opsyon sa build sa GCC 4.8 at mas bago, dati nilang i-overwrite ang zero-
inisyal na padding, o ganap na i-bypass ang nasimulang buffer. Nagdulot ito op/pack.t
upang mabigo. [perl #123971]
· Ang pagpapalawak ng array na na-clone mula sa isang parent na thread ay maaaring magresulta sa "Pagbabago ng a
read-only value tried" na mga error kapag sinusubukang baguhin ang mga bagong elemento. [perl
#124127]
· Isang pagkabigo sa paninindigan at kasunod na pag-crash na may "*x= " ay naayos na. [perl
#123790]
· Ang isang posibleng pag-crash/looping bug na nauugnay sa pag-compile ng mga lexical sub ay naayos na.
[perl #124099]
· Ang UTF-8 ay gumagana na ngayon nang tama sa mga pangalan ng function, sa mga hindi naka-quote na HERE-document terminator,
at sa mga variable na pangalan na ginamit bilang array index. [perl #124113]
· Ang paulit-ulit na global pattern na mga tugma sa scalar na konteksto sa malalaking may bahid na mga string ay
exponentially mabagal depende sa kasalukuyang posisyon ng tugma sa string. [perl
#123202]
· Naayos na ang iba't ibang mga pag-crash dahil sa pagkalito ng parser ng mga error sa syntax.
[perl #123801] [perl #123801]
[perl #123802]
[perl #123955]
· Ang "split" sa saklaw ng leksikal na $_ ay naayos upang hindi mabigo ang mga pahayag. [perl
#123763]
· Ang "my $x : attr" syntax sa loob ng iba't ibang mga operator ng listahan ay hindi na nabigo sa mga pahayag. [perl
#123817]
· Isang sign na "@" sa mga quote na sinusundan ng isang hindi ASCII na digit (na hindi wastong identifier)
ay magiging sanhi ng pag-crash ng parser, sa halip na subukan lang ang "@" bilang literal. Ito
ay naayos na. [perl #123963]
· Ang "*bar::=*foo::=*glob_with_hash" ay nag-crash mula noong Perl 5.14, ngunit hindi na.
[perl #123847]
· Ang "foreach" sa kontekstong scalar ay hindi nagtutulak ng isang item sa stack, na nagreresulta sa
mga bug. (Ang "print 4, scalar do { foreach(@x){} } + 1" ay magpi-print ng 5.) Naayos na ito
upang ibalik ang "undef". [perl #124004]
· Maraming mga kaso ng data na ginamit upang mag-imbak ng mga nilalaman ng variable ng kapaligiran sa pagiging core C code
posibleng ma-overwrite bago gamitin ay naayos na. [perl #123748]
· Ilang pattern na nagsisimula sa "/.*..../" mabagal ang tugma sa mahabang string
mula noong v5.8, at ang ilan sa anyo "/.*..../i" ay naging mabagal mula noong v5.18. Sila na ngayon
mabilis ulit lahat. [perl #123743] .
· Ang orihinal na nakikitang halaga ng $/ ay pinapanatili na ngayon kapag ito ay nakatakda sa isang di-wastong halaga.
Dati kung itatakda mo ang $/ sa isang reference sa isang array, halimbawa, ang perl ay gagawa ng a
runtime error at hindi itinakda ang "PL_rs", ngunit ang Perl code na nagsuri sa $/ ay makikita ang array
sanggunian. [perl #123218] .
· Sa isang regular na pattern ng expression, isang klase ng POSIX, tulad ng "[:ascii:]", ay dapat nasa loob ng a
klase ng character na naka-bracket, tulad ng "qr/[[:ascii:]]/". Ang babala ay ibinibigay kapag may bagay
mukhang isang klase ng POSIX ay wala sa loob ng isang naka-bracket na klase. Ang babalang iyon ay hindi
nabubuo kapag ang klase ng POSIX ay tinanggihan: "[:^ascii:]". Naayos na ito ngayon.
· Ipinakilala ng Perl 5.14.0 ang isang bug kung saan ang "eval { LABEL: }" ay mag-crash. Ito ay naging
nakapirming. [perl #123652] .
· Naayos na ang iba't ibang mga pag-crash dahil sa pagkalito ng parser ng mga error sa syntax.
[perl #123617] . [perl #123617]
. [perl #123737]
. [perl #123753]
.
· Ang code na tulad ng "/$a[/" ay ginagamit upang basahin ang susunod na linya ng input at ituring ito na parang dumating ito
kaagad pagkatapos ng opening bracket. Ang ilang di-wastong code dahil dito ay mag-parse at
tumakbo, ngunit nagdulot ng mga pag-crash ang ilang code, kaya hindi na ito pinapayagan ngayon. [perl #123712]
.
· Ayusin ang argument underflow para sa "pack". [perl #123874]
.
· Ayusin ang pangangasiwa ng hindi mahigpit na "\x{}". Ngayon ang "\x{}" ay katumbas ng "\x{0}" sa halip na
faulting.
· Ang "stat -t" ay hindi na itinuturing na stackable, tulad na lang ng "-t stat". [perl #123816]
.
· Ang sumusunod ay hindi na nagiging sanhi ng SEGV: "qr{x+(y(?0))*}".
· Inayos ang walang katapusang loop sa pag-parse ng mga backref sa mga pattern ng regexp.
· Ilang menor de edad na pag-aayos ng bug sa pag-uugali ng Infinity at NaN, kabilang ang mga babala kung kailan
stringifying Infinity-like o NaN-like string. Halimbawa, ang "NaNcy" ay hindi numify sa
NaN na.
· Isang bug sa mga pattern ng regular na expression na maaaring humantong sa mga segfault at iba pang mga pag-crash
ay naayos na. Nangyari lamang ito sa mga pattern na pinagsama-sama ng "/i" habang kumukuha
i-account ang kasalukuyang lokal na POSIX (na karaniwang nangangahulugang kailangan nilang i-compile sa loob
ang saklaw ng "gamitin ang lokal"), at dapat mayroong isang string na hindi bababa sa 128 na magkakasunod
byte upang tumugma. [perl #123539] .
· Gumagana na ngayon ang "s///g" sa napakahabang mga string (kung saan mayroong higit sa 2 bilyon
iterations) sa halip na mamatay gamit ang 'Substitution loop'. [perl #103260]
. [perl #103260]
.
· Ang "gmtime" ay hindi na nag-crash sa mga hindi-isang-numero na halaga. [perl #123495]
.
· "\()" (isang reference sa isang walang laman na listahan), at "y///" na may lexical na $_ sa saklaw, ay maaaring pareho
gumawa ng masamang pagsulat sa dulo ng stack. Pareho silang naayos para i-extend ang
salansan muna.
· "prototype()" na walang mga argumento na ginamit upang basahin ang nakaraang item sa stack, kaya
Ang "print "foo", prototype()" ay magpi-print ng prototype ng foo. Ito ay naayos upang ipahiwatig ang $_
sa halip. [perl #123514] .
· Ang ilang mga kaso ng lexical state subs na idineklara sa loob ng predeclared subs ay maaaring mag-crash, dahil
halimbawa kapag sinusuri ang isang string kasama ang pangalan ng isang panlabas na variable, ngunit hindi na
gawin.
· Ang ilang mga kaso ng nested lexical state subs sa loob ng anonymous subs ay maaaring magdulot ng 'Kakaiba
mga error sa pagkopya o posibleng pag-crash.
· Kapag sinusubukang maglabas ng mga babala, ang default na debugger ng perl (perl5db.pl) ay minsan
pagbibigay ng 'Hindi natukoy na subroutine &DB::db_warn called' sa halip. Ang bug na ito, na nagsimula sa
nangyari sa Perl 5.18, ay naayos na. [perl #123553]
.
· Ang ilang mga syntax error sa mga pagpapalit, gaya ng "s/${<>{})//", ay mag-crash, at magkakaroon
ginawa ito mula noong Perl 5.10. (Sa ilang mga kaso ang pag-crash ay hindi nagsimulang mangyari hanggang 5.16.)
Ang pag-crash, siyempre, ay naayos na. [perl #123542]
.
· Ayusin ang isang pares ng mga string paglaki laki pagkalkula overflows; sa partikular, isang ulitin
Ang expression tulad ng "33 x ~3" ay maaaring magdulot ng malaking buffer overflow mula noong bagong output
Ang laki ng buffer ay hindi wastong nahawakan ng "SvGROW()". Isang expression na ganito ngayon
maayos na gumagawa ng memory wrap panic. [perl #123554]
.
· "formline("@...", "a");" babagsak. Ang "FF_CHECKNL" case sa "pp_formline()" ay hindi
itakda ang pointer na ginamit upang markahan ang posisyon ng chop, na humantong sa case na "FF_MORE".
nagka-crash na may segmentation fault. Naayos na ito. [perl #123538]
.
· Isang posibleng buffer overrun at pag-crash kapag nag-parse ng literal na pattern habang regular
naayos na ang pagsasama-sama ng expression. [perl #123604]
.
· Ang "fchmod()" at "futimes()" ay nakatakda na ngayon ng $! kapag nabigo sila dahil sa naipasa sa isang saradong file
hawakan. [perl #122703] .
· Ang "op_free()" at "scalarvoid()" ay hindi na nag-crash dahil sa isang stack overflow kapag naglalabas ng isang
malalim na recursive op tree. [perl #108276]
.
· Sa Perl 5.20.0, hindi sinasadyang na-off ng $^N ang panloob na flag ng UTF-8 kung na-access
mula sa isang bloke ng code sa loob ng isang regular na expression, epektibong UTF-8-encoding ang halaga.
Naayos na ito. [perl #123135]
.
· Ang isang nabigong tawag na "semctl" ay hindi na nag-o-overwrite sa mga umiiral nang item sa stack, ibig sabihin
na ang "(semctl(-1,0,0,0))[0]" ay hindi na nagbibigay ng "uninitialized" na babala.
· Ang "else{foo()}" na walang puwang bago ang "foo" ay mas mahusay na ngayon sa pagtatalaga ng tamang linya
numero sa pahayag na iyon. [perl #122695]
.
· Minsan ang pagtatalaga sa "@array = split" ay na-optimize upang "hatiin" mismo
direktang nagsusulat sa array. Nagdulot ito ng bug, na pumipigil sa pagtatalagang ito
ginagamit sa konteksto ng halaga. Kaya ang "(@a=split//,"foo")=bar()" ay isang error. (Ang bug na ito
malamang na bumalik sa Perl 3, noong idinagdag ang pag-optimize.) Naayos na ito ngayon.
[perl #123057] .
· Kapag nabigo ang isang listahan ng argumento ang mga pagsusuri na tinukoy ng isang subroutine na lagda (na
isang pang-eksperimentong tampok pa rin), ang mga nagresultang mensahe ng error ay nagbibigay na ngayon ng file at
numero ng linya ng tumatawag, hindi ng tinatawag na subroutine. [perl #121374]
.
· Ang mga operator ng flip-flop (".." at "..." sa kontekstong scalar) na ginamit upang mapanatili ang isang hiwalay
estado para sa bawat antas ng recursion (ang dami ng beses na tinawag ang nakapaloob na sub
recursively), salungat sa dokumentasyon. Ngayon ang bawat pagsasara ay may isang panloob na estado
para sa bawat flip-flop. [perl #122829]
.
· Ang flip-flop operator (".." sa kontekstong scalar) ay magbabalik ng parehong scalar bawat isa
oras, maliban kung ang naglalaman ng subroutine ay tinawag na recursively. Ngayon laging bumabalik
isang bagong scalar. [perl #122829] .
· "gamitin", "hindi", mga label ng pahayag, mga espesyal na bloke ("BEGIN") at pod ay pinahihintulutan na ngayon bilang
ang unang bagay sa isang bloke na "mapa" o "grep", ang bloke pagkatapos ng "i-print" o "sabihin" (o iba pa
function) na nagbabalik ng hawakan, at sa loob ng "${...}", "@{...}", atbp. [perl #122782]
.
· Ang operator ng pag-uulit na "x" ay nagpapalaganap na ngayon ng konteksto ng halaga sa kaliwang argumento nito
kapag ginamit sa mga konteksto tulad ng "foreach". Nagbibigay-daan iyon sa "for($#that_array)x2) { ... }" sa
gumana gaya ng inaasahan kung binago ng loop ang $_.
· "(...) x ..." sa kontekstong scalar na ginagamit upang sirain ang stack kung ang isang operand ay isang bagay
na may "x" na labis na karga, na nagdudulot ng maling pag-uugali. [perl #121827]
.
· Ang pagtatalaga sa isang lexical scalar ay madalas na na-optimize; halimbawa sa "my $x; $x = $y
+ $z", ang assign operator ay na-optimize ang layo at ang add operator ay nagsusulat ng resulta nito
direkta sa $x. Ang iba't ibang mga bug na nauugnay sa pag-optimize na ito ay naayos na. tiyak
ang mga operator sa kanang bahagi ay minsan mabibigo na italaga ang halaga sa lahat o
magtalaga ng maling halaga, o tatawagan ang STORE nang dalawang beses o hindi man lang sa mga nakatali na variable.
Ang mga operator na apektado ay "$foo++", "$foo--", at "-$foo" sa ilalim ng "use integer",
"chomp", "chr" at "setpgrp".
· Ang mga takdang-aralin sa listahan ay minsan ay maraming surot kung ang parehong scalar ay napunta sa magkabilang panig ng
pagtatalaga dahil sa paggamit ng "nakatali", "mga halaga" o "bawat isa". Mali ang magiging resulta
halaga na itinalaga.
· Ang "setpgrp($nonzero)" (na may isang argumento) ay hindi sinasadyang nabago sa 5.16 upang nangangahulugang
setpgrp(0). Naayos na ito.
· Maaaring ibalik ng "__SUB__" ang maling halaga o kahit na sira ang memorya sa ilalim ng debugger (ang
"-d" switch) at sa mga sub na naglalaman ng "eval $string".
· Kapag ang "sub () { $var }" ay naging inlinable, nagbabalik ito ngayon ng ibang scalar sa bawat pagkakataon,
tulad ng gagawin ng isang non-inlinable sub, kahit na ino-optimize pa rin ni Perl ang kopya sa mga kaso
kung saan wala itong makikitang pagkakaiba.
· Ang "aking sub f () { $var }" at "sub () : attr { $var }" ay hindi na karapat-dapat para sa
inlining. Ang dating ay babagsak; itatapon lang ng huli ang mga katangian.
Ang isang pagbubukod ay ginawa para sa hindi kilalang ":method" na katangian, na walang ginagawa
magkano.
· Ang inlining ng mga sub na may walang laman na prototype ay mas pare-pareho na ngayon kaysa dati.
Dati, isang sub na may maraming pahayag, kung saan lahat maliban sa huli ay na-optimize
malayo, magiging inlinable lang kung ito ay isang hindi kilalang sub na naglalaman ng string na "eval"
o "estado" na deklarasyon o pagsasara sa isang panlabas na lexical na variable (o anumang hindi kilalang sub
sa ilalim ng debugger). Ngayon ang anumang sub na natitiklop sa isang pare-pareho pagkatapos
ang mga pahayag ay na-optimize na ang layo ay karapat-dapat para sa inlining. Nalalapat ito sa mga bagay
tulad ng "sub () { jabber() kung DEBUG; 42 }".
Ang ilang mga subroutine na may tahasang "pagbabalik" ay ginawang inlinable, salungat sa
dokumentasyon, Ngayon ay laging pinipigilan ng "pagbabalik" ang pag-inlin.
· Sa ilang system, tulad ng VMS, ang "crypt" ay maaaring magbalik ng hindi ASCII string. Kung isang scalar
na nakatalaga sa ay naglalaman ng string ng UTF-8 dati, at hindi mag-o-off ang "crypt".
ang bandila ng UTF-8, kaya sinisira ang halaga ng pagbabalik. Mangyayari ito sa
"$lexical = crypt ...".
· Hindi na tinatawag ng "crypt" ang "FETCH" nang dalawang beses sa isang nakatali na unang argumento.
· Isang hindi natapos na here-doc sa huling linya ng isang operator na parang quote ("qq[${ <
"/(?{ <
· Ang "index()" at "rindex()" ay hindi na nag-crash kapag ginamit sa mga string na higit sa 2GB ang laki. [perl
#121562] .
· Isang maliit, dating sinadya, memory leak sa "PERL_SYS_INIT"/"PERL_SYS_INIT3" sa
Naayos ang mga build ng Win32. Maaaring makaapekto ito sa mga embedder na paulit-ulit na gumagawa at sumisira
perl engine sa loob ng parehong proseso.
· Ibinabalik ngayon ng "POSIX::localeconv()" ang data para sa pinagbabatayan na lokal ng programa kahit na
kapag tinawag mula sa labas ng saklaw ng "use locale".
· Ang "POSIX::localeconv()" ay gumagana na ngayon nang maayos sa mga platform na walang "LC_NUMERIC"
at/o "LC_MONETARY", o kung saan ang Perl ay pinagsama-sama upang balewalain ang alinman o pareho
ng mga lokal na kategoryang ito. Sa ganitong mga pangyayari, wala na ngayong mga entry para sa
mga katumbas na halaga sa hash na ibinalik ng "localeconv()".
· Ang "POSIX::localeconv()" ay minarkahan na ngayon nang naaangkop ang mga halagang ibinabalik nito bilang UTF-8 o hindi.
Dati sila ay palaging ibinabalik bilang mga byte, kahit na sila ay dapat na
naka-encode bilang UTF-8.
· Sa Microsoft Windows, sa loob ng saklaw ng "use locale", ang sumusunod na POSIX character
ang mga klase ay nagbigay ng mga resulta para sa maraming mga lokal na hindi umaayon sa pamantayan ng POSIX:
"[[:alnum:]]", "[[:alpha:]]", "[[:blangko:]]", "[[:digit:]]", "[[:graph:]]",
"[[:lower:]]", "[[:print:]]", "[[:punct:]]", "[[:upper:]]", "[[:word:]]", at
"[[:xdigit:]]". Ito ay dahil ang pinagbabatayan na pagpapatupad ng Microsoft ay hindi
sundin ang pamantayan. Gumagawa na ngayon si Perl ng mga espesyal na pag-iingat upang maitama ito.
· Maraming isyu ang nakita ng Coverityhttp://www.coverity.com/> at naayos.
· Dapat na gumana nang maayos ang "system()" at mga kaibigan sa higit pang mga build ng Android.
Dahil sa isang oversight, tinukoy ang halaga sa pamamagitan ng "-Dtargetsh" sa I-configure ang magtatapos
hanggang hindi pinansin ng ilan sa proseso ng pagbuo. Nagdulot ito ng mga perls na cross-compiled para sa
Android na magkakaroon ng mga sira na bersyon ng "system()", "exec()" at mga backticks: ang
ang mga utos ay hahanapin ang "/ Bin / SH" sa halip na "/system/bin/sh", at gayon din
nabigo para sa karamihan ng mga device, na nag-iiwan ng $! bilang "ENOENT".
· "qr(...\(...\)...)", "qr[...\[...\]...]", at "qr{...\{.. .\}...}" gumagana na ngayon.
Dati imposibleng matakasan ang tatlong kaliwang character na ito na may backslash
sa loob ng isang regular na pattern ng expression kung saan kung hindi ay isasaalang-alang ang mga ito
metacharacters, at ang pattern opening delimiter ay ang character, at ang closing
delimiter ay ang mirror character nito.
· "s///e" sa may bahid na mga string ng UTF-8 na sira ang "pos()". Ang bug na ito, na ipinakilala noong 5.20, ay
naayos na ngayon. [perl #122148] .
· Ang isang hindi salitang hangganan sa isang regular na expression ("\B") ay hindi palaging tumutugma sa dulo ng
string; sa partikular na "q{} =~ /\B/" ay hindi tumugma. Ang bug na ito, na ipinakilala sa perl 5.14,
ay naayos na ngayon. [perl #122090] .
· Ang "" P" =~ /(?=.*P)P/" ay dapat tumugma, ngunit hindi. Naayos na ito ngayon. [perl #122171]
.
· Ang hindi pag-compile ng "use Foo" sa isang "eval" ay maaaring mag-iwan ng huwad na "BEGIN" subroutine
kahulugan, na magbubunga ng babala na "Subroutine BEGIN redefined" sa susunod na paggamit
ng "use", o iba pang "BEGIN" block. [perl #122107]
.
· Ang "pamamaraan { BLOCK } ARGS" syntax ay tama na ngayong nag-parse ng mga argumento kung nagsimula ang mga ito sa
isang opening brace. [perl #46947] .
· Ang mga panlabas na aklatan at Perl ay maaaring may magkaibang ideya kung ano ang lokal. Ito ay
may problema kapag nag-parse ng mga string ng bersyon kung naging numeric separator ng locale
nagbago. Ang pag-parse ng bersyon ay na-patched upang matiyak na pinangangasiwaan nito nang tama ang mga lokal.
[perl #121930] .
· Ang isang bug ay naayos kung saan ang mga zero-length na assertion at code block sa loob ng isang regex
maaaring maging sanhi ng "pos" na makakita ng maling halaga. [perl #122460]
.
· Ang dereferencing ng mga constant ay gumagana na ngayon nang tama para sa typeglob constants. Dati ang
glob ay stringified at ang pangalan nito ay tumingin sa itaas. Ngayon ang glob mismo ay ginagamit. [perl
#69456]
· Kapag nag-parse ng sigil ("$" "@" "%" "&)" na sinusundan ng mga braces, hindi na sinusubukan ng parser
upang hulaan kung ito ay isang bloke o isang hash constructor (nagdudulot ng error sa syntax kapag ito
hulaan ang huli), dahil maaari lamang itong maging isang bloke.
· Pinalalabas na ngayon ng "undef $reference" ang referent, sa halip na manatili dito
hanggang sa susunod na pahayag. [perl #122556]
· Iba't ibang mga kaso kung saan ginagamit ang pangalan ng isang sub (autoload, overloading, mga mensahe ng error)
dating nag-crash para sa mga lexical na sub, ngunit naayos na.
· Sinusubukan na ngayon ng Bareword lookup na iwasan ang pagpapasigla ng mga pakete kung ito ay lumabas na ang bareword ay
hindi magiging isang subroutine na pangalan.
· Compilation ng mga hindi kilalang constants (hal, "sub () { 3}") ay hindi na nagtatanggal ng anuman
subroutine na pinangalanang "__ANON__" sa kasalukuyang package. Hindi lang "*__ANON__{CODE}"
na-clear, ngunit nagkaroon din ng memory leak. Bumabalik ang bug na ito sa Perl 5.8.0.
· Mga deklarasyon ng stub tulad ng "sub f;" at "sub f ();" hindi na punasan ang mga constants ng
parehong pangalan na ipinahayag ng "use constant". Ang bug na ito ay ipinakilala sa Perl 5.10.0.
· Ang "qr/[\N{named sequence}]/" ay gumagana na ngayon nang maayos sa maraming pagkakataon.
Ang ilang pangalan na kilala sa "\N{...}" ay tumutukoy sa isang pagkakasunud-sunod ng maraming character, sa halip na
ang karaniwang solong karakter. Ang mga klase ng character na naka-bracket sa pangkalahatan ay tumutugma lamang sa solo
mga character, ngunit ngayon ay idinagdag ang espesyal na pangangasiwa upang maitugma nila ang pinangalanan
mga pagkakasunud-sunod, ngunit hindi kung ang klase ay baligtad o ang pagkakasunud-sunod ay tinukoy bilang ang
simula o katapusan ng isang hanay. Sa mga kasong ito, ang tanging pagbabago sa pag-uugali mula sa dati ay
isang bahagyang rewording ng nakamamatay na mensahe ng error na ibinigay kapag ang klase na ito ay bahagi ng a
"?[...])" construct. Kapag ang "[...]" ay nakatayong mag-isa, ang parehong hindi nakamamatay na babala bilang
bago ay itinaas, at tanging ang unang karakter sa pagkakasunud-sunod ang ginagamit, muli tulad ng
bago.
· Ang mga maruming constant na sinusuri sa oras ng pag-compile ay hindi na nagiging sanhi ng hindi nauugnay na mga pahayag sa
maging marumi. [perl #122669]
· "bukas $$fh, ...", na nagbibigay-buhay sa isang handle na may pangalan tulad ng "main::_GEN_0", ay hindi
pagbibigay sa hawakan ng tamang bilang ng sanggunian, kaya maaaring mangyari ang dobleng libreng.
· Kapag nagpasya na ang isang bareword ay isang pangalan ng pamamaraan, ang parser ay malito kung ang isang
Umiral ang "aming" sub na may parehong pangalan, at hanapin ang paraan sa package ng
"aming" sub, sa halip na ang package ng invocant.
· Hindi na malito ang parser ng "\U=" sa loob ng double-quoted string. Dati naman
gumawa ng isang syntax error, ngunit ngayon ay kino-compile ito nang tama. [perl #80368]
· Ito ay palaging ang intensyon para sa "-B" at "-T" file test operator upang gamutin
Mga file na naka-encode ng UTF-8 bilang text. (Na-update ang perlfunc para sabihin ito.) Dati, ito
ay posible para sa ilang mga file na ituring na UTF-8 na talagang hindi wastong UTF-8.
Naayos na ito ngayon. Gumagana na rin ang mga operator sa mga platform ng EBCDIC.
· Sa ilalim ng ilang kundisyon, ang mga mensahe ng babala ay nakataas sa panahon ng regular na pattern ng expression
Ang compilation ay inilabas nang higit sa isang beses. Naayos na ito ngayon.
· Ipinakilala ng Perl 5.20.0 ang isang regression kung saan ang isang UTF-8 ay nag-encode ng regular na expression
pattern na naglalaman ng isang maliit na titik ng ASCII ay hindi tumugma sa uppercase nito
katapat. Naayos na iyon sa parehong 5.20.1 at 5.22.0. [perl #122655]
· Ang patuloy na pagtiklop ay maaaring maling sugpuin ang mga babala kung ang mga leksikal na babala ("gumamit
mga babala" o "walang babala") ay walang bisa at ang $^W ay mali sa oras ng pag-compile at
totoo sa oras ng pagtakbo.
· Ang paglo-load ng mga talahanayan ng Unicode sa panahon ng isang regular na tugma ng expression ay maaaring magdulot ng paninindigan
mga pagkabigo sa ilalim ng pag-debug ng mga build kung ginamit ng nakaraang tugma ang parehong regular
pagpapahayag. [perl #122747]
· Ang pag-clone ng thread ay ginamit nang hindi wasto para sa mga lexical na sub, posibleng magdulot ng mga pag-crash o
double frees sa labasan.
· Mula noong Perl 5.14.0, tinatanggal ang $SomePackage::{__ANON__} at pagkatapos ay i-undefine ang isang anonymous
maaaring masira ng subroutine ang mga bagay sa loob, na magreresulta sa pag-crash ng Devel::Peek o B.pm
pagbibigay ng walang katuturang datos. Naayos na ito.
· Ang "(caller $n)[3]" ay nag-uulat na ngayon ng mga pangalan ng lexical subs, sa halip na ituring ang mga ito bilang
"(hindi alam)".
· Sinusuportahan na ngayon ng "sort subname LIST" ang paggamit ng lexical sub bilang routine ng paghahambing.
· Aliasing (hal, sa pamamagitan ng "*x = *y") ay maaaring malito ang listahan ng mga takdang-aralin na nagbabanggit sa dalawa
mga pangalan para sa parehong variable sa magkabilang panig, na nagiging sanhi ng mga maling value na italaga.
[perl #15667]
· Ang mga long here-doc terminator ay maaaring magdulot ng hindi magandang pagbabasa sa mga maikling linya ng input. Ito ay
naayos na. Kaduda-duda na maaaring may nangyaring anumang pag-crash. Ang bug na ito ay bumalik sa
noong ipinakilala ang mga here-doc sa Perl 3.000 dalawampu't limang taon na ang nakakaraan.
· Isang optimization sa "split" upang ituring ang "split /^/" tulad ng "split /^/m" ay nagkaroon ng kapus-palad
side-effect ng pagtrato din sa "split /\A/" tulad ng "split /^/m", na hindi dapat.
Naayos na ito. (Gayunpaman, tandaan na ang "split /^x/" ay hindi kumikilos tulad ng
"split /^x/m", na itinuturing ding isang bug at aayusin sa hinaharap
bersyon.) [perl #122761]
· Ang hindi kilalang "my Class $var" syntax (tingnan ang mga field at attribute) ay maaaring malito
sa saklaw ng "use utf8" kung ang "Class" ay isang pare-pareho na ang halaga ay naglalaman ng Latin-1
character.
· Ang pag-lock at pag-unlock ng mga halaga sa pamamagitan ng Hash::Util o "Internals::SvREADONLY" ay wala na
anumang epekto sa mga value na read-only sa simula. Dati, ina-unlock ang ganyan
ang mga halaga ay maaaring magresulta sa mga pag-crash, pag-hang o iba pang maling pag-uugali.
· Ang ilang hindi natapos na "(?(...)...)" na mga konstruksyon sa mga regular na expression ay maaaring mag-crash
o magbigay ng mga maling mensahe ng error. Ang "/(?(1)/" ay isang halimbawa.
· Ang "pack "w", $tied" ay hindi na tumatawag ng FETCH nang dalawang beses.
· Maglista ng mga takdang-aralin tulad ng "($x, $z) = (1, $y)" ngayon ay gumagana nang tama kung ang $x at $y ay naging
inalyas ng "foreach".
· Ang ilang mga pattern kabilang ang mga bloke ng code na may mga error sa syntax, tulad ng "/ (?{(^{})/", ay
mag-hang o mabigo sa mga pahayag sa pag-debug ng mga build. Ngayon sila ay gumagawa ng mga pagkakamali.
· Naayos na ang isang assertion failure kapag nag-parse ng "sort" na pinagana ang debugging. [perl
#122771] .
· Ang "*a = *b; @a = split //, $b[1]" ay maaaring gumawa ng masamang pagbabasa at makagawa ng mga junk na resulta.
· Sa "() = @array = split", ang "() =" sa simula ay hindi na nakakalito sa optimizer
sa pagpapalagay ng limitasyon ng 1.
· Hindi na pinipigilan ng mga nakamamatay na babala ang output ng mga error sa syntax. [perl #122966]
.
· Nag-ayos ng NaN double-to-long-double conversion error sa VMS. Para sa mga tahimik na NaN (at sa
Itanium, hindi Alpha) negatibong infinity sa halip na NaN ang ginawa.
· Inayos ang isyu na naging sanhi ng hindi tamang pag-iwan ng ilang file sa "make distclean".
[perl #122820] .
· Itinakda na ngayon ng AIX ang haba sa "getsockopt" nang tama. [perl #120835]
. [cpan #120835]
. [cpan #91183]
.
· Ang yugto ng pag-optimize ng isang compilation ng regexp ay maaaring tumakbo "magpakailanman" at maubos ang lahat
memorya sa ilalim ng ilang mga pangyayari; naayos na ngayon. [perl #122283]
.
· Ang script ng pagsubok t/op/crypt.t ngayon ay gumagamit ng SHA-256 algorithm kung ang default ay
may kapansanan, sa halip na magbigay ng mga pagkabigo. [perl #121591]
.
· Inayos ang isang off-by-one na error kapag nagtatakda ng laki ng isang shared array. [perl #122950]
.
· Inayos ang isang bug na maaaring maging sanhi ng perl na pumasok sa isang walang katapusang loop sa panahon ng compilation. Sa
partikular, a habang(1) sa loob ng isang sublist, hal
sub foo { () = ($a, my $b, ($c, do { habang(1) {} })) }
Ang bug ay ipinakilala noong 5.20.0 [perl #122995]
.
· Sa Win32, kung ang isang variable ay "lokal" -ized sa isang pseudo-proseso na sa kalaunan ay nag-forked,
pagpapanumbalik ng orihinal na halaga sa bata pseudo-proseso sanhi memory katiwalian at
isang pag-crash sa child pseudo-process (at samakatuwid ay ang proseso ng OS). [perl #40565]
.
· Ang pagtawag sa "write" sa isang format na may "^**" na field ay maaaring magdulot ng panic sa "sv_chop()" kung
walang sapat na mga argumento o kung walang laman ang variable na ginamit upang punan ang field.
[perl #123245] .
· Ang mga non-ASCII lexical sub name ay lumalabas na ngayon nang walang trailing junk kapag lumitaw ang mga ito nang mali
mga mensahe.
· Ang "\@" subroutine prototype ay hindi na nag-flatten ng mga naka-parentesis na array (kumukuha ng
reference sa bawat elemento), ngunit kumukuha ng reference sa array mismo. [perl #47363]
.
· Ang isang bloke na walang laman maliban sa isang C-style na "for" loop ay maaaring masira ang stack,
nagiging sanhi ng mga listahan sa labas ng block na mawalan ng mga elemento o ma-overwrite ang mga elemento. Ito
maaaring mangyari sa "map { for(...){...} } ..." at sa mga listahang naglalaman ng "do {
para sa(...){...} }". [perl #123286] .
· Ang "scalar()" ay nagpapalaganap na ngayon ng lvalue context, upang ang "for(scalar($#foo)) { ... }" ay maaaring
baguhin ang $#foo hanggang $_.
· Ang "qr/@array(?{block})/" ay hindi na namamatay gamit ang "Kakaibang kopya ng ARRAY". [perl #123344]
.
· Ang "eval na '$variable'" sa mga nested na pinangalanang subroutine ay minsan ay naghahanap ng isang global
variable kahit na may leksikal na baryabol sa saklaw.
· Sa perl 5.20.0, "sort CORE::fake" kung saan ang 'fake' ay kahit ano maliban sa isang keyword,
nagsimulang putulin ang huling 6 na character at ituturing ang resulta bilang isang sub name ng pag-uuri.
Ang dating gawi ng pagtrato sa "CORE::fake" bilang sort sub name ay naibalik na.
[perl #123410] .
· Sa labas ng "use utf8", hindi pinapayagan ang isang solong character na Latin-1 na lexical na variable. Ang
mensahe ng error para dito, "Hindi magagamit ang global $foo...", ay nagbibigay ng basura sa halip na ang
variable na pangalan.
· "readline" sa isang hindi umiiral na hawakan ay naging sanhi ng "${^LAST_FH}" upang makabuo ng isang reference sa
isang hindi natukoy na scalar (o nabigo sa isang assertion). Ngayon ang "${^LAST_FH}" ay hindi natukoy.
· Ang "(...) x ..." sa walang bisa na konteksto ay inilalapat na ngayon ang scalar na konteksto sa kaliwang argumento,
sa halip na konteksto ang kasalukuyang sub ay tinawag. [perl #123020]
.
Kilala Mga Problema
· Ang "pack"-ing isang NaN sa isang perl na pinagsama-sama sa Visual C 6 ay hindi kumikilos nang maayos, na humahantong
sa isang pagsubok na kabiguan sa t/op/infnan.t. [perl 125203]
· Ang isang layunin ay para sa Perl na ma-recompile para gumana nang maayos sa anumang Unicode
bersyon. Sa Perl 5.22, gayunpaman, ang pinakamaagang naturang bersyon ay Unicode 5.1 (kasalukuyan ay
7.0).
· Mga platform ng EBCDIC
· Ang "cmp" (at samakatuwid ay "pag-uuri") ay hindi kinakailangang magbigay ng mga tamang resulta
kapag ang parehong mga operand ay UTF-EBCDIC na naka-encode na mga string at mayroong pinaghalong ASCII
at/o control character, kasama ng iba pang character.
· Mga saklaw na naglalaman ng "\N{...}" sa "tr///" (at "y///") transliteration operator
ay ginagamot nang iba kaysa sa mga katumbas na hanay sa mga pattern ng regular na expression.
Ang mga ito ay dapat, ngunit huwag, maging sanhi ng mga halaga sa mga hanay sa lahat na tratuhin bilang
Mga punto ng Unicode code, at hindi mga native. ("Bersyon 8 Regular Expression" sa
Perlre ay nagbibigay ng mga detalye kung paano ito dapat gumana.)
· Ang pag-encode at pag-encode ay halos sira.
· Maraming mga module ng CPAN na ipinadala kasama ang mga pangunahing nagpapakita ng mga bagsak na pagsubok.
· Maaaring hindi gumana nang maayos ang "pack"/"unpack" na may format na "U0".
· Ang mga sumusunod na module ay kilala na may mga pagkabigo sa pagsubok sa bersyong ito ng Perl. Sa
maraming mga kaso, ang mga patch ay naisumite, kaya sana ay magkakaroon ng mga bagong release sa lalong madaling panahon:
· B::Bumuo ng bersyon 1.50
· B::Utils bersyon 0.25
· Coro bersyon 6.42
· Bersyon ng mananayaw 1.3130
· Data::Alyas bersyon 1.18
· Data::Dump::Streamer na bersyon 2.38
· Data::Util na bersyon 0.63
· Devel:: Spy bersyon 0.07
· bersyon ng invoker 0.34
· Lexical::Var bersyon 0.009
· LWP::ConsoleLogger bersyon 0.000018
· Mason bersyon 2.22
· NgxQueue bersyon 0.02
· Padre bersyon 1.00
· I-parse::Keyword 0.08
Obituary
Namatay si Brian McCauley noong Mayo 8, 2015. Siya ay isang madalas na poster sa Usenet, Perl Monks, at
iba pang mga forum ng Perl, at gumawa ng ilang kontribusyon sa CPAN sa ilalim ng palayaw na NOBULL, kasama ang sa
ang Perl FAQ. Siya ay dumalo sa halos bawat YAPC::Europe, at sa katunayan, tumulong sa pag-aayos
YAPC::Europe 2006 at ang QA Hackathon 2009. Ang kanyang katalinuhan at ang kanyang kasiyahan sa masalimuot na sistema
ay partikular na maliwanag sa kanyang pag-ibig ng board games; maraming Perl mongers ay magkakaroon ng mahilig
mga alaala ng paglalaro ng Fluxx at iba pang mga laro kasama si Brian. Mami-miss siya.
Pagkilala
Ang Perl 5.22.0 ay kumakatawan sa humigit-kumulang 12 buwan ng pag-unlad mula noong Perl 5.20.0 at
naglalaman ng humigit-kumulang 590,000 linya ng mga pagbabago sa 2,400 file mula sa 94 na may-akda.
Hindi kasama ang mga awtomatikong nabuong file, dokumentasyon at mga tool sa paglabas, mayroong humigit-kumulang
370,000 linya ng mga pagbabago sa 1,500 .pm, .t, .c at .h na mga file.
Ang Perl ay patuloy na umuunlad hanggang sa ikatlong dekada nito salamat sa isang makulay na komunidad ng mga user
at mga developer. Ang mga sumusunod na tao ay kilala na nag-ambag ng mga pagpapahusay na iyon
naging Perl 5.22.0:
Aaron Crane, Abhijit Menon-Sen, Abigail, Alberto Simo~es, Alex Solovey, Alex Vandiver,
Alexandr Ciornii, Alexandre (Midnite) Jousset, Andreas Koenig, Andreas Voegele, Andrew
Fresh, Andy Dougherty, Anthony Heading, Aristotle Pagaltzis, brian d foy, Brian Fraser,
Chad Granum, Chris 'BinGOs' Williams, Craig A. Berry, Dagfinn Ilmari Mannsaaker, Daniel
Dragan, Darin McBride, Dave Rolsky, David Golden, David Mitchell, David Wheeler, Dmitri
Tikhonov, Doug Bell, E. Choroba, Ed J, Eric Herman, Padre Chrysostomos, George Greer,
Glenn D. Golden, Graham Knop, H.Merijn Brand, Herbert Breunung, Hugo van der Sanden, James
E Keenan, James McCoy, James Raspass, Jan Dubois, Jarkko Hietaniemi, Jasmine Ngan, Jerry
D. Hedden, Jim Cromie, John Goodyear, kafka, Karen Etheridge, Karl Williamson, Kent
Fredric, kmx, Lajos Veres, Leon Timmermans, Lukas Mai, Mathieu Arnold, Matthew Horsfall,
Max Maischein, Michael Bunk, Nicholas Clark, Niels Thykier, Niko Tyni, Norman Koch,
Olivier Mengue, Peter John Acklam, Peter Martini, Petr PisaX, Philippe Bruhat (BooK),
Pierre Bogossian, Rafael Garcia-Suarez, Randy Stauner, Reini Urban, Ricardo Signes, Rob
Hoelz, Rostislav Skudnov, Sawyer X, Shirakata Kentaro, Shlomi Fish, Sisyphus, Slaven
Rezic, Smylers, Steffen Mueller, Steve Hay, Sullivan Beck, syber, Tadeusz SoXnierz, Thomas
Sibley, Todd Rinaldo, Tony Cook, Vincent Pit, Vladimir Marek, Yaroslav Kuzmin, Yves Orton,
AEvar Arnfjoer` Bjarmason.
Ang listahan sa itaas ay halos tiyak na hindi kumpleto dahil awtomatiko itong nabuo mula sa
kasaysayan ng kontrol ng bersyon. Sa partikular, hindi nito kasama ang mga pangalan ng (napakarami
pinahahalagahan) mga nag-aambag na nag-ulat ng mga isyu sa Perl bug tracker.
Marami sa mga pagbabagong kasama sa bersyong ito ay nagmula sa mga module ng CPAN na kasama sa
Ang kaibuturan ni Perl. Nagpapasalamat kami sa buong komunidad ng CPAN sa pagtulong sa Perl na umunlad.
Para sa mas kumpletong listahan ng lahat ng makasaysayang nag-ambag ng Perl, pakitingnan ang MGA AUTHORS
file sa pamamahagi ng pinagmumulan ng Perl.
Pag-uulat Bug
Kung nakita mo ang sa tingin mo ay isang bug, maaari mong suriin ang mga artikulong kamakailang nai-post sa
comp.lang.perl.misc newsgroup at ang database ng perl bug sa . doon
maaari ding impormasyon sahttp://www.perl.org/>, ang Perl Home Page.
Kung naniniwala kang mayroon kang hindi naiulat na bug, mangyaring patakbuhin ang perlbug program na kasama
iyong paglaya. Siguraduhing i-trim ang iyong bug sa isang maliit ngunit sapat na kaso ng pagsubok. Ang iyong bug
ulat, kasama ang output ng "perl -V", ay ipapadala sa [protektado ng email] upang maging
sinuri ng Perl porting team.
Kung ang bug na iyong iniuulat ay may mga implikasyon sa seguridad, na ginagawa itong hindi naaangkop
ipadala sa isang pampublikong naka-archive na mailing list, pagkatapos ay mangyaring ipadala ito sa
[protektado ng email]. Tumuturo ito sa isang saradong subscription na hindi naka-archive na pag-mail
list, na kinabibilangan ng lahat ng pangunahing committers, na makakatulong sa pagtatasa ng epekto
ng mga isyu, alamin ang isang resolusyon, at tumulong sa pag-coordinate ng pagpapalabas ng mga patch sa
pagaanin o ayusin ang problema sa lahat ng platform kung saan sinusuportahan ang Perl. Please lang
gamitin ang address na ito para sa mga isyu sa seguridad sa Perl core, hindi para sa mga module nang nakapag-iisa
ipinamahagi sa CPAN.
Gamitin ang perl5220delta online gamit ang mga serbisyo ng onworks.net