InglesPransesEspanyol

OnWorks favicon

perl5200delta - Online sa Cloud

Patakbuhin ang perl5200delta sa OnWorks na libreng hosting provider sa Ubuntu Online, Fedora Online, Windows online emulator o MAC OS online emulator

Ito ang command na perl5200delta 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


perl5200delta - ano ang bago para sa perl v5.20.0

DESCRIPTION


Inilalarawan ng dokumentong ito ang mga pagkakaiba sa pagitan ng release na 5.18.0 at ng release na 5.20.0.

Kung nag-a-upgrade ka mula sa naunang release gaya ng 5.16.0, basahin muna ang perl5180delta,
na naglalarawan ng mga pagkakaiba sa pagitan ng 5.16.0 at 5.18.0.

Ubod Mga Pagpapahusay


Pang-eksperimentong Subroutine lagda
Declarative syntax upang i-unwrap ang listahan ng argumento sa mga lexical na variable. "sub foo ($a,$b)
{...}" sinusuri ang bilang ng mga argumento at inilalagay ang mga argumento sa mga lexical na variable.
Ang mga lagda ay hindi katumbas ng umiiral na idyoma ng "sub foo { my($a,$b) = @_; ... }".
Available lang ang mga lagda sa pamamagitan ng pagpapagana ng hindi default na feature, at pagbuo ng mga babala
tungkol sa pagiging eksperimental. Ang syntactic clash sa mga prototype ay pinamamahalaan sa pamamagitan ng hindi pagpapagana ng
maikling prototype syntax kapag naka-enable ang mga lagda.

Tingnan ang "Mga Lagda" sa perlsub para sa mga detalye.

"sub" s ngayon kumuha a "prototype" katangian
Sa pagdedeklara o pagtukoy ng isang "sub", ang prototype ay maaari na ngayong tukuyin sa loob ng a
"prototype" na attribute sa halip na sa parens na sumusunod sa pangalan.

Halimbawa, ang "sub foo($$){}" ay maaaring muling isulat bilang "sub foo : prototype($$){}".

pa pare-pareho tularan pag-parse
Ang maraming semicolon sa mga subroutine na prototype ay matagal nang pinahintulutan at itinuturing bilang a
solong semicolon. May isang kaso kung saan hindi ito nangyari. Isang subroutine na kung saan
Ang prototype ay nagsisimula sa "*" o ";*" ay maaaring makaapekto kung ang isang bareword ay itinuturing na isang paraan
pangalan o sub call. Nalalapat din ito ngayon sa ";;;*".

Matagal nang pinapayagan ang whitespace sa loob ng mga subroutine na prototype, kaya ang "sub( $ $ )" ay
katumbas ng "sub($$)", ngunit hanggang ngayon ay natanggal ito nang na-parse ang subroutine.
Samakatuwid, ang whitespace ay hindi pinapayagan sa mga prototype na itinakda ng "Scalar::Util::set_prototype". Ngayon
ito ay pinahihintulutan, at hindi na tinatanggal ng parser ang whitespace. Ang ibig sabihin nito ay "prototype
&mysub" ay nagbabalik ng orihinal na prototype, whitespace at lahat.

"rand" ngayon Gumagamit a pare-pareho walang pili numero dyeneretor
Dati ang perl ay gagamit ng isang platform na partikular na random number generator, na nag-iiba-iba sa pagitan ng
libc rand(), random () or drand48().

Nangangahulugan ito na ang kalidad ng mga random na numero ng perl ay mag-iiba sa bawat platform,
mula sa 15 bits ng rand() sa Windows hanggang 48-bits sa mga platform ng POSIX gaya ng Linux na may
drand48().

Ginagamit na ngayon ng Perl ang sarili nitong panloob drand48() pagpapatupad sa lahat ng mga platform. Ito ay hindi
gawing cryptographically secure ang "rand" ng perl. [perl #115928]

bago pagpira-pirasuhin palaugnayan
Ang bagong %hash{...} at %array[...] syntax ay nagbabalik ng listahan ng key/value (o index/value)
magkapares. Tingnan ang "Mga Key/Value Hash Slices" sa perldata.

Pang-eksperimentong postfix Dereferencing
Kapag may bisa ang feature na "postderef," itatakda ang mga sumusunod na syntactical equivalencies
up:

$sref->$*; # katulad ng ${ $sref } # interpolate
$aref->@*; # katulad ng @{ $aref } # interpolate
$href->%*; # pareho ng %{ $href }
$cref->&*; # katulad ng &{ $cref }
$gref->**; # katulad ng *{ $gref }

$aref->$#*; # katulad ng $#{ $aref }

$gref->*{ $slot }; # katulad ng *{ $gref }{ $slot }

$aref->@[ ... ]; # katulad ng @$aref[ ... ] # interpolate
$href->@{ ... }; # katulad ng @$href{ ... } # interpolate
$aref->%[ ... ]; # katulad ng %$aref[ ... ]
$href->%{ ... }; # katulad ng %$href{ ... }

Ang mga minarkahan bilang interpolating ay nag-interpolate lang kung ang nauugnay na feature na "postderef_qq" ay
pinagana din. Ang tampok na ito ay pagsubok at mag-trigger
"experimental::postderef"-category na mga babala kapag ginamit, maliban kung pinigilan ang mga ito.

Para sa higit pang impormasyon, kumonsulta sa Postfix Dereference Syntax na seksyon ng perlref.

Unicode 6.3 ngayon suportado
Sinusuportahan na ngayon ng Perl at ipinadala kasama ang Unicode 6.3 (bagama't maaaring i-recompile ang Perl sa anumang
nakaraang paglabas din ng Unicode). Ang isang detalyadong listahan ng mga pagbabago sa Unicode 6.3 ay nasa
<http://www.unicode.org/versions/Unicode6.3.0/>.

bago "\p{Unicode}" regular pagpapahayag huwaran ari-arian
Ito ay kasingkahulugan ng "\p{Any}" at tumutugma sa hanay ng mga punto ng code na tinukoy ng Unicode na 0 -
0x10FFFF.

Mas mabuti 64-bit suportahan
Sa 64-bit na mga platform, ang internal array function ay gumagamit na ngayon ng 64-bit offsets, na nagpapahintulot sa Perl
arrays na humawak ng higit sa 2**31 elemento, kung mayroon kang available na memory.

Sinusuportahan na ngayon ng regular na expression engine ang mga string na mas mahaba sa 2**31 character. [perl
#112790, #116907]

Ang mga function na PerlIO_get_bufsiz, PerlIO_get_cnt, PerlIO_set_cnt at PerlIO_set_ptrcnt ngayon
may SSize_t, sa halip na int, ibalik ang mga halaga at parameter.

"gamitin lokal" ngayon gumagana on UTF-8 lokal
Hanggang sa paglabas na ito, mga single-byte na lokal lang, gaya ng seryeng ISO 8859 ang sinusuportahan.
Ngayon, ang lalong karaniwang multi-byte na mga lokal na UTF-8 ay sinusuportahan din. Isang lokal na UTF-8
ay isa kung saan ang set ng character ay Unicode at ang pag-encode ay UTF-8. Ang POSIX
Mga pagpapatakbo ng kategoryang "LC_CTYPE" (pagbabago ng case (tulad ng "lc()", "\U"), at character
klasipikasyon ("\w", "\D", "qr/[[:punct:]]/")) sa ilalim ng naturang lokal na gawain na parang hindi
sa ilalim ng lokal, ngunit sa halip ay parang nasa ilalim ng "gamitin ang tampok na 'unicode_strings'", maliban sa mga panuntunan sa marumi
ay sinusunod. Nananatili ang pag-uuri ayon sa pagkakasunud-sunod ng code point sa release na ito. [perl #56820].

"gamitin lokal" ngayon pinagsama-sama on system wala lokal abilidad
Ang dati nang paggawa nito ay naging sanhi ng hindi pag-compile ng programa. Sa loob ng saklaw nito ang programa
kumikilos na parang nasa "C" na lokal. Kaya ang mga program na isinulat para sa mga platform na sumusuporta sa mga lokal
maaaring tumakbo sa mga platform na walang lokal na walang pagbabago. Mga pagtatangka na baguhin ang lokal na malayo sa
ang "C" na lokal ay, siyempre, mabibigo.

pa lokal Pinasimulan umurong pagpipilian
Kung nagkaroon ng error sa mga lokal sa pagsisimula ng Perl, agad itong sumuko at sinubukan
upang gamitin ang lokal na "C". Ngayon ay sinubukan muna nitong gumamit ng iba pang mga lokal na ibinigay ng kapaligiran
variable, gaya ng nakadetalye sa "ENVIRONMENT" sa perllocale. Halimbawa, kung "LC_ALL" at
Parehong nakatakda ang "LANG", at nabigo ang paggamit ng lokal na "LC_ALL", susubukan na ngayon ni Perl ang "LANG"
locale, at kung nabigo iyon, babalik ba ito sa "C". Sa mga Windows machine, gagawin ni Perl
subukan, bago ang paggamit ng "C", ang default na lokal na sistema kung ang lahat ng mga lokal na ibinigay ng kapaligiran
nabigo ang mga variable.

"-DL" runtime opsyon ngayon idinagdag para pagsubaybay lokal pagtatakda ng
Dinisenyo ito para sa mga developer ng core ng Perl na tumulong sa mga bug sa pag-debug ng field tungkol sa
lokal

-F ngayon nagpapahiwatig -a at -a nagpapahiwatig -n
Dati -F wala -a ay isang no-op, at -a wala -n or -p ay isang no-op, kasama nito
magpalit, kung magsusuplay ka -F tapos pareho -a at -n ay ipinahiwatig at kung ibibigay mo -a pagkatapos -n is
ipinahiwatig.

Maaari mo pa ring gamitin -p para sa dagdag na pag-uugali nito. [perl #116190]

$a at $b babala pagkalibre
Ang mga espesyal na variable na $a at $b, na ginamit sa "sort", ay exempt na ngayon sa mga babala na "nagamit na minsan",
kahit na hindi ginagamit ang "sort". Ginagawa nitong mas madali para sa mga module ng CPAN na magbigay ng mga function
gamit ang $a at $b para sa magkatulad na layunin. [perl #120462]

Katiwasayan


Iwasan maaari basahin of libre()d memorya sa panahon ng pag-parse
Posible iyon libre()d memory ay maaaring basahin sa panahon ng pag-parse sa hindi karaniwan
pangyayari ng Perl program na nagtatapos sa isang heredoc at ang huling linya ng file sa
disk na walang tinatapos na bagong linya na character. Naayos na ito ngayon.

hindi kaayon Mga Pagbabago


"gawin" maaari hindi mas mahaba be ginamit sa tawag subroutines
Ang form na "do SUBROUTINE(LIST)" ay nagresulta sa isang babala sa paghinto sa paggamit mula noong Perl v5.0.0,
at ngayon ay isang syntax error.

Parang quote makatakas mga pagbabago
Ang character pagkatapos ng "\c" sa isang double-quoted na string ("..." o qq(...)) o regular
ang expression ay dapat na ngayong napi-print na character at maaaring hindi "{".

Ang literal na "{" pagkatapos ng "\B" o "\b" ay nakamamatay na ngayon.

Ang mga ito ay hindi na ginagamit sa perl v5.14.0.

Pagdumi ang mangyayari sa ilalim mas marami pang mga pangyayari; ngayon umaayon sa dokumentasyon
Nakakaapekto ito sa regular na pagtutugma ng expression at pagpapalit ng case ng isang string ("lc", "\U",
at iba pa.) sa loob ng saklaw ng "use locale". Ang resulta ay nabahiran na ngayon batay sa operasyon,
anuman ang mga nilalaman ng string, tulad ng dokumentasyon (perlsec, "SECURITY"
sa perllocale) ay nagpapahiwatig na ito ay dapat. Dati, para sa pagpapatakbo ng pagbabago ng kaso, kung ang
string ay hindi naglalaman ng mga character na ang pagbabago ng kaso ay maaaring maapektuhan ng lokal, ang
hindi mabahiran ang resulta. Halimbawa, ang resulta ng "uc()" sa isang walang laman na string o isa
na naglalaman lamang ng mga puntos sa itaas-Latin1 na code ay may bahid na ngayon, at hindi na dati. Ito ay humahantong sa
mas pare-pareho ang mga resulta ng pagdumi. Ang mga pattern ng regular na expression ay nabahiran ang kanilang hindi binary
mga resulta (tulad ng $&, $2) kung at kung ang pattern ay naglalaman ng mga elemento na nakasalalay ang pagtutugma
sa kasalukuyang (potensyal na may bahid) na lokal. Tulad ng pagpapalit ng mga function ng kaso, ang aktwal
ang mga nilalaman ng string na itinutugma ngayon ay hindi mahalaga, samantalang dati ito ay mahalaga. Para sa
halimbawa, kung ang pattern ay naglalaman ng isang "\w", ang mga resulta ay mabahiran kahit na ang tugma ay nangyari
hindi kailangang gamitin ang bahaging iyon ng pattern upang magtagumpay o mabigo, dahil anong "\w"
ang mga tugma ay depende sa lokal. Gayunpaman, halimbawa, isang "." sa isang pattern ay hindi paganahin
bahid, dahil ang tuldok ay tumutugma sa anumang solong karakter, at kung ano ang kasalukuyang lokal
hindi nagbabago sa anumang paraan kung ano ang tumutugma at kung ano ang hindi.

"\p{}", "\P{}" pagtutugma ay nagbago para hindi Unicode code puntos.
Ang "\p{}" at "\P{}" ay tinukoy ng Unicode lamang sa mga punto ng code na tinukoy ng Unicode ("U+0000"
sa pamamagitan ng "U+10FFFF"). Ang kanilang pag-uugali sa pagtutugma ng mga legal na Unicode code point ay
hindi nagbabago, ngunit may mga pagbabago para sa mga puntos ng code na 0x110000 at mas mataas. Dati, si Perl
itinuring ang resulta ng pagtutugma ng "\p{}" at "\P{}" laban sa mga ito bilang "undef", na
isinasalin sa "false". Para sa "\P{}", ito ay kinumpleto sa "true". Isang babala
ay dapat na itataas kapag nangyari ito. Gayunpaman, ang iba't ibang mga pag-optimize ay maaaring
pigilan ang babala, at ang mga resulta ay madalas na kontra-intuitive, na may parehong tugma at
ang tila komplemento nito ay hindi totoo. Ngayon lahat ng hindi Unicode code point ay itinuturing bilang
karaniwang hindi nakatalagang mga punto ng Unicode code. Ito sa pangkalahatan ay mas Do-What-I-Mean. Isang babala
ay itinataas lamang kung ang mga resulta ay masasabing iba sa isang mahigpit na diskarte sa Unicode, at
mula sa ginagawa noon ni Perl. Maaaring gawin ito ng code na kailangang mahigpit na sumusunod sa Unicode
nakamamatay na babala, at pagkatapos ay palaging itinataas ni Perl ang babala.

Ang mga detalye ay nasa "Beyond Unicode code points" sa perlunicode.

"\p{Lahat}" ay naging pinalaki sa tumugma lahat maaari code puntos
Ang elemento ng pattern ng regular na expression na tinukoy ng Perl na "\p{All}", hindi ginagamit sa CPAN, na ginamit upang
tumugma lamang sa mga punto ng Unicode code; ngayon ay tumutugma ito sa lahat ng posibleng mga puntos ng code; iyan na iyon
ay katumbas ng "qr/./s". Kaya ang "\p{All}" ay hindi na magkasingkahulugan ng "\p{Any}", na
patuloy na tumutugma lamang sa mga punto ng Unicode code, gaya ng sinasabi ng Unicode na dapat.

Data::Dumper's output maaari baguhin
Depende sa mga istruktura ng data na na-dump at sa mga setting na itinakda para sa Data::Dumper, ang na-dump
maaaring nagbago ang output mula sa mga nakaraang bersyon.

Kung mayroon kang mga pagsubok na nakadepende sa eksaktong output ng Data::Dumper, maaaring mabigo ang mga ito.

Upang maiwasan ang problemang ito sa iyong code, subukan laban sa istruktura ng data mula sa pagsusuri ng
dumped structure, sa halip na ang dump mismo.

Local decimal punto katangian hindi mas mahaba paglabas sa labas of "gamitin lokal" saklaw
Ito ay talagang isang pag-aayos ng bug, ngunit ang ilang code ay umasa sa bug na naroroon, kaya
ang pagbabagong ito ay nakalista dito. Ang kasalukuyang lokal na pinapatakbo ng programa ay hindi
dapat na nakikita ng Perl code maliban sa loob ng saklaw ng isang "use locale". gayunpaman,
hanggang ngayon sa ilalim ng ilang mga pangyayari, ang character na ginagamit para sa isang decimal point (madalas na a
kuwit) na tumagas sa labas ng saklaw. Kung ang iyong code ay apektado ng pagbabagong ito, magdagdag lang ng a
"gumamit ng lokal".

Takdang Aralin of Windows socket mali mga code sa $! ngayon mas gusto errno.h halaga sa ibabaw
WSAGetLastError() halaga
Sa mga nakaraang bersyon ng Perl, ang Windows sockets error codes bilang ibinalik ni WSAGetLastError()
ay itinalaga sa $!, at ilang mga constant gaya ng ECONNABORTED, hindi sa errno.h sa VC++ (o
ang iba't ibang Windows port ng gcc) ay tinukoy sa mga katumbas na halaga ng WSAE* upang payagan ang $!
upang masuri laban sa mga E* constants na na-export nina Errno at POSIX.

Naging maayos ito hanggang sa VC++ 2010 at mas bago, na nagpakilala ng mga bagong E* constant na may mga value
> 100 sa errno.h, kabilang ang ilang pagiging (muling) tinukoy ng perl sa mga halaga ng WSAE*. Nagdulot iyon
mga problema kapag nagli-link ng XS code laban sa iba pang mga aklatan na gumamit ng orihinal na mga kahulugan
of errno.h nagpapatuloy.

Upang maiwasan ang hindi pagkakatugma na ito, ipinamapa na ngayon ng perl ang mga WSAE* error code sa mga E* value kung saan
posible, at itinalaga ang mga halagang iyon sa $!. Ang E* constants na na-export nina Errno at POSIX
ay na-update upang tumugma upang ang pagsubok ng $! laban sa kanila, saanman posible, ay gagawin
patuloy na gumana gaya ng inaasahan, at lahat ng E* constant ay matatagpuan sa errno.h ay na-export na ngayon mula sa
ang mga modyul na iyon kasama ang kanilang orihinal errno.h halaga.

Upang maiwasan ang pagkasira sa umiiral na Perl code na nagtatalaga ng mga halaga ng WSAE* sa $!, perl
ngayon ay humarang sa takdang-aralin at nagsasagawa ng parehong pagmamapa sa mga halagang E* na ginagamit nito
panloob kapag nagtalaga sa $! mismo.

Gayunpaman, nananatili ang isang pabalik na hindi pagkakatugma: umiiral na Perl code na naghahambing ng $!
laban sa mga numeric na halaga ng WSAE* error code na dating itinalaga sa $!
masisira na ngayon sa mga kasong iyon kung saan ang katumbas na halaga ng E* ay itinalaga
sa halip. Isa lang itong isyu para sa mga E* value na <100, na palaging na-export mula sa
Errno at POSIX kasama ang kanilang orihinal errno.h mga halaga, at samakatuwid ay hindi magagamit para sa
WSAE* error code tests (hal. WSAEINVAL ay 10022, ngunit ang katumbas na EINVAL ay 22). (E*
ang mga halagang > 100, kung mayroon man, ay muling tinukoy sa mga halaga ng WSAE*, kaya ang pagiging tugma ay maaaring
nakamit sa pamamagitan ng paggamit ng E* constants, na gagana bago at pagkatapos ng pagbabagong ito,
kahit na gumagamit ng iba't ibang mga numerong halaga sa ilalim ng hood.)

Pag-andar "PerlIO_vsprintf" at "PerlIO_sprintf" mayroon naging inalis
Ang dalawang function na ito, hindi dokumentado, hindi ginagamit sa CPAN, at may problema, ay inalis na.

Mga paghinto


Ang "/\C/" katangian klase
Hindi na ginagamit ang "/\C/" na klase ng regular na expression ng character. Mula sa perl 5.22 hanggang dito
bubuo ng babala, at mula sa perl 5.24 pataas ito ay magiging isang regular na expression
error sa compiler. Kung kailangan mong suriin ang mga indibidwal na byte na bumubuo sa isang UTF8-encoded
character, pagkatapos ay gamitin muna ang "utf8::encode()" sa string (o isang kopya).

Literal kontrol character in nagbabago pangalan
Ang paghintong ito ay nakakaapekto sa mga bagay tulad ng $\cT, kung saan ang \cT ay literal na kontrol (tulad ng isang "NAK"
o "NEGATIVE ACKNOWLEDGE" character) sa source code. Nakakagulat, lumalabas na
orihinal na ito ay inilaan bilang ang canonical na paraan ng pag-access sa mga variable tulad ng $^T, na may
ang caret form ay idinaragdag lamang bilang alternatibo.

Ang literal na form ng kontrol ay hindi na ginagamit para sa dalawang pangunahing dahilan. Mayroon itong malamang
hindi naaayos na mga bug, gaya ng $\cI na hindi gumagana bilang alyas para sa $^I, at ang kanilang paggamit ay hindi
portable sa mga platform na hindi ASCII: Habang gagana ang $^T saanman, ang \cT ay nasa whitespace
EBCDIC. [perl #119123]

Mga sanggunian sa non-integers at hindi positibo integer in $/
Ang pagtatakda ng $/ sa isang reference sa zero o isang reference sa isang negatibong integer ay hindi na ginagamit,
at mag-aasal tamang-tama na parang nakatakda ito sa "undef". Kung gusto mong itakda ang slurp behavior
$/ sa "undef" nang tahasan.

Ang pagtatakda ng $/ sa isang reference sa isang hindi integer ay ipinagbabawal na at maglalagay ng error. Perl
ay hindi kailanman naidokumento kung ano ang mangyayari sa kontekstong ito at habang ginagamit nito ang
katulad ng pagtatakda ng $/ sa address ng mga sanggunian sa hinaharap, maaari itong kumilos nang iba,
kaya ipinagbawal namin ang paggamit na ito.

Katangian pagtutugma gawain in POSIX
Ang paggamit ng alinman sa mga function na ito sa module na "POSIX" ay hindi na ginagamit: "isalnum",
"isalpha", "iscntrl", "isdigit", "isgraph", "islower", "isprint", "ispunct", "isspace",
"isupper", at "isxdigit". Ang mga function ay maraming surot at hindi gumagana sa UTF-8 na naka-encode
mga string. Tingnan ang kanilang mga entry sa POSIX para sa karagdagang impormasyon.

Isang babala ang itataas sa unang tawag sa alinman sa kanila mula sa bawat lugar sa code na sila
ay tinatawag. (Kaya ang paulit-ulit na pahayag sa isang loop ay magtataas lamang ng isang babala.)

Nakabatay sa interpreter mga thread ay ngayon nasiraan ng loob
Ang "mga thread na nakabatay sa interpreter" na ibinigay ng Perl ay hindi ang mabilis, magaan na sistema para sa
multitasking na maaaring inaasahan o inaasahan ng isa. Ang mga thread ay ipinatupad sa paraang iyon
gawin silang madaling gamitin sa maling paraan. Ilang tao ang nakakaalam kung paano gamitin ang mga ito nang tama o magagawa
magbigay ng tulong.

Ang paggamit ng mga interpreter-based na mga thread sa perl ay opisyal na hindi hinihikayat.

Module mga pagtanggal
Ang mga sumusunod na module ay aalisin mula sa pangunahing pamamahagi sa hinaharap na release, at
sa oras na iyon ay kailangang mai-install mula sa CPAN. Mga distribusyon sa CPAN na nangangailangan
ang mga modyul na ito ay kailangang ilista ang mga ito bilang mga kinakailangan.

Ang mga pangunahing bersyon ng mga module na ito ay maglalabas na ngayon ng "hindi na ginagamit"-category na mga babala upang alertuhan
ka sa katotohanang ito. Upang patahimikin ang mga babala sa paghinto sa paggamit na ito, i-install ang mga module na pinag-uusapan
mula sa CPAN.

Tandaan na ang binalak na pag-alis ng mga module na ito mula sa core ay hindi nagpapakita ng isang paghatol
tungkol sa kalidad ng code at hindi dapat ituring bilang isang mungkahi na ang kanilang paggamit ay
natigil. Ang kanilang disinclusion mula sa core ay pangunahing nakasalalay sa kanilang pangangailangan sa bootstrap
isang fully functional, CPAN-capable Perl installation, hindi sa mga alalahanin sa kanilang disenyo.

CGI at ang nauugnay nitong CGI:: packages
inc::pinakabago
Package::Constants
Module::Build at ang nauugnay na Module::Build:: packages

Gamit mga pagtanggal
Ang mga sumusunod na utility ay aalisin mula sa pangunahing pamamahagi sa hinaharap na release,
at sa oras na iyon ay kailangang mai-install mula sa CPAN.

find2perl
s2p
a2p

pagganap Mga Pagpapahusay


· Ang Perl ay may bagong copy-on-write na mekanismo na umiiwas sa pangangailangang kopyahin ang internal
string buffer kapag nagtatalaga mula sa isang scalar patungo sa isa pa. Ginagawa nitong malaki ang pagkopya
ang mga string ay lumilitaw nang mas mabilis. Pagbabago ng isa sa dalawa (o higit pa) na mga string pagkatapos ng isang
pipilitin ng pagtatalaga ang isang kopya sa loob. Ginagawa nitong hindi na kailangang magpasa ng mga string
sanggunian para sa kahusayan.

Ang tampok na ito ay magagamit na sa 5.18.0, ngunit hindi pinagana bilang default. Ito ay ang
default na ngayon, at kaya hindi mo na kailangan pang bumuo ng perl gamit ang I-configure ang argumento:

-Accflags=-DPERL_NEW_COPY_ON_WRITE

Maaari itong i-disable (sa ngayon) sa isang perl build na may:

-Accflags=-DPERL_NO_COW

Sa ilang mga operating system Perl ay maaaring pinagsama-sama sa paraang ang anumang pagtatangka
mag-crash ang pagbabago ng mga string buffer na ibinahagi ng maraming SV. Sa ganitong paraan masusubok ng mga may-akda ng XS
na ang kanilang mga module ay humahawak ng mga copy-on-write na mga scalar nang tama. Tingnan ang "Kopyahin sa Pagsulat" sa
perlguts para sa detalye.

· Ang Perl ay may optimizer para sa mga pattern ng regular na expression. Pinag-aaralan nito ang pattern sa
maghanap ng mga bagay tulad ng pinakamababang haba na dapat itugma ng isang string, atbp. Ito ngayon
mas mahusay na pinangangasiwaan ang mga puntos ng code na nasa itaas ng hanay ng Latin1.

· Pagpapatupad ng regex na naglalaman ng "^" anchor (o ang variant nito sa ilalim ng flag na "/m")
ay ginawa nang mas mabilis sa ilang sitwasyon.

· Ginagamit na ngayon ang mga na-precompute na hash value sa mas maraming lugar habang naghahanap ng paraan.

· Ang patuloy na paghahanap ng hash key ($hash{key} kumpara sa $hash{$key}) ay matagal nang may
internal hash value na kinalkula sa oras ng pag-compile, para mapabilis ang paghahanap. Ang pag-optimize na ito
ngayon lang din inilapat sa hash slices.

· Pinagsamang "at" at "o" na mga operator sa walang bisang konteksto, tulad ng mga nabuo para sa "maliban kung
($a && $b)" at "kung ($a || b)" ngayon ay short circuit nang direkta sa dulo ng statement.
[perl #120128]

· Sa ilang partikular na sitwasyon, kapag ang "pagbabalik" ay ang huling pahayag sa pangunahing subroutine
saklaw, ito ay ma-optimize. Nangangahulugan ito ng code tulad ng:

sub baz { return $cat; }

ay kumilos na ngayon tulad ng:

sub baz { $cat; }

na kapansin-pansing mas mabilis.

[perl #120765]

· Kodigo tulad ng:

aking $x; # o @x, %x
aking $y;

ay na-optimize na ngayon sa:

aking ($x, $y);

Sa kumbinasyon ng padrange optimization na ipinakilala sa v5.18.0, nangangahulugan ito na mas mahaba
uninitialized ang aking mga variable na pahayag ay na-optimize din, kaya:

aking $x; aking @y; aking %z;

nagiging:

aking ($x, @y, %z);

[perl #121077]

· Ang paglikha ng ilang uri ng mga listahan, kabilang ang array at hash slice, ay ngayon
mas mabilis.

· Ang pag-optimize para sa mga arrays na na-index na may maliit na constant integer ay inilalapat na ngayon para sa
mga integer sa hanay na -128..127, sa halip na 0..255. Dapat nitong pabilisin ang Perl code
gamit ang mga expression tulad ng $x[-1], sa gastos ng (marahil mas bihira) gamit ang code
mga expression tulad ng $x[200].

· Ang unang pag-ulit sa isang malaking hash (gamit ang "mga key" o "bawat isa") ay mas mabilis na ngayon. Ito ay
nakamit sa pamamagitan ng preallocating ng internal na iterator state ng hash, sa halip na tamad
nililikha ito noong unang inuulit ang hash. (Para sa maliliit na hash, ang iterator ay pa rin
nilikha lamang kapag unang kailangan. Ang pagpapalagay ay ang maliliit na hash ay mas malamang
gamitin bilang mga bagay, at samakatuwid ay hindi kailanman inilalaan. Para sa malalaking hash, mas kaunti iyon
malamang na totoo, at ang halaga ng paglalaan ng iterator ay napuno ng halaga ng
paglalaan ng espasyo para sa hash mismo.)

· Kapag gumagawa ng isang pandaigdigang regex na tugma sa isang string na nagmula sa "readline" o "<>"
operator, ang data ay hindi na kinopya nang hindi kinakailangan. [perl #121259]

· Ang dereferencing (tulad ng sa "$obj->[0]" o "$obj->{k}") ay mas mabilis na ngayon kapag ang $obj ay isang
halimbawa ng isang klase na may mga overload na pamamaraan, ngunit hindi nag-overload sa alinman sa
dereferencing pamamaraan "@{}", "%{}", at iba pa.

· Hindi na nilalaktawan ng optimiser ni Perl ang pag-optimize ng code na sumusunod sa ilang partikular na "eval {}"
mga expression (kabilang ang mga may maliwanag na walang katapusan na loop).

· Ang pagpapatupad ngayon ay gumagawa ng isang mas mahusay na trabaho ng pag-iwas sa walang kabuluhang trabaho sa runtime.
Mga operasyong "null" na walang epekto sa loob (ginawa bilang side-effect ng pag-parse ng Perl
mga programa) ay karaniwang tinatanggal sa panahon ng compilation. Ang pagtanggal na iyon ay inilapat na ngayon sa
ilang sitwasyon na hindi pa nahawakan dati.

· Mas kakaunting disk I/O na ngayon ang ginagawa ng Perl kapag nakikitungo sa mga katangian ng Unicode na sumasaklaw hanggang sa
tatlong hanay ng magkakasunod na code point.

Module at Pragmatiko


bago Module at Pragmatiko
· Ang pang-eksperimentong 0.007 ay naidagdag sa core ng Perl.

· IO::Socket::IP 0.29 ay naidagdag sa Perl core.

Na-update Module at Pragmatiko
· Archive::Ang tar ay na-upgrade mula sa bersyon 1.90 hanggang 1.96.

· Ang arybase ay na-upgrade mula sa bersyon 0.06 hanggang 0.07.

· Katangian::Na-upgrade ang mga Handler mula sa bersyon 0.94 hanggang 0.96.

· Ang mga katangian ay na-upgrade mula sa bersyon 0.21 hanggang 0.22.

· Ang autodie ay na-upgrade mula sa bersyon 2.13 hanggang 2.23.

· Ang AutoLoader ay na-upgrade mula sa bersyon 5.73 hanggang 5.74.

· Ang autouse ay na-upgrade mula sa bersyon 1.07 hanggang 1.08.

· Ang B ay na-upgrade mula sa bersyon 1.42 hanggang 1.48.

· B::Ang Concise ay na-upgrade mula sa bersyon 0.95 hanggang 0.992.

· B::Na-upgrade ang debug mula sa bersyon 1.18 hanggang 1.19.

· B:: Ang Deparse ay na-upgrade mula sa bersyon 1.20 hanggang 1.26.

· Ang base ay na-upgrade mula sa bersyon 2.18 hanggang 2.22.

· Ang benchmark ay na-upgrade mula sa bersyon 1.15 hanggang 1.18.

· Ang bignum ay na-upgrade mula sa bersyon 0.33 hanggang 0.37.

· Ang Carp ay na-upgrade mula sa bersyon 1.29 hanggang 1.3301.

· Ang CGI ay na-upgrade mula sa bersyon 3.63 hanggang 3.65. TANDAAN: Ang CGI ay hindi na ginagamit at maaaring
inalis mula sa hinaharap na bersyon ng Perl.

· Ang mga charname ay na-upgrade mula sa bersyon 1.36 hanggang 1.40.

· Klase::Ang istraktura ay na-upgrade mula sa bersyon 0.64 hanggang 0.65.

· Compress::Raw::Bzip2 ay na-upgrade mula sa bersyon 2.060 sa 2.064.

· Ang Compress::Raw::Zlib ay na-upgrade mula sa bersyon 2.060 hanggang 2.065.

· Ang Config::Perl::V ay na-upgrade mula sa bersyon 0.17 hanggang 0.20.

· Ang constant ay na-upgrade mula sa bersyon 1.27 hanggang 1.31.

· Ang CPAN ay na-upgrade mula sa bersyon 2.00 hanggang 2.05.

· CPAN::Na-upgrade ang Meta mula sa bersyon 2.120921 hanggang 2.140640.

· Ang CPAN::Meta::Ang mga kinakailangan ay na-upgrade mula sa bersyon 2.122 hanggang 2.125.

· Ang CPAN::Meta::YAML ay na-upgrade mula sa bersyon 0.008 hanggang 0.012.

· Data::Dumper ay na-upgrade mula sa bersyon 2.145 sa 2.151.

· Ang DB ay na-upgrade mula sa bersyon 1.04 hanggang 1.07.

· Ang DB_File ay na-upgrade mula sa bersyon 1.827 hanggang 1.831.

· Ang DBM_Filter ay na-upgrade mula sa bersyon 0.05 hanggang 0.06.

· Ang deprecate ay na-upgrade mula sa bersyon 0.02 hanggang 0.03.

· Devel:: Na-upgrade ang Peek mula sa bersyon 1.11 hanggang 1.16.

· Devel:: Ang PPPort ay na-upgrade mula sa bersyon 3.20 hanggang 3.21.

· Ang mga diagnostic ay na-upgrade mula sa bersyon 1.31 hanggang 1.34.

· Digest:: Ang MD5 ay na-upgrade mula sa bersyon 2.52 hanggang 2.53.

· Digest:: Na-upgrade ang SHA mula sa bersyon 5.84 hanggang 5.88.

· Ang DynaLoader ay na-upgrade mula sa bersyon 1.18 hanggang 1.25.

· Ang Encode ay na-upgrade mula sa bersyon 2.49 hanggang 2.60.

· Ang pag-encode ay na-upgrade mula sa bersyon 2.6_01 hanggang 2.12.

· Ang Ingles ay na-upgrade mula sa bersyon 1.06 hanggang 1.09.

Ang $OLD_PERL_VERSION ay idinagdag bilang alyas ng $].

· Ang Errno ay na-upgrade mula sa bersyon 1.18 hanggang 1.20_03.

· Ang Exporter ay na-upgrade mula sa bersyon 5.68 hanggang 5.70.

· ExtUtils::CBuilder ay na-upgrade mula sa bersyon 0.280210 sa 0.280216.

· ExtUtils::Na-upgrade ang command mula sa bersyon 1.17 hanggang 1.18.

· ExtUtils::Ang pag-embed ay na-upgrade mula sa bersyon 1.30 hanggang 1.32.

· ExtUtils::Ang pag-install ay na-upgrade mula sa bersyon 1.59 hanggang 1.67.

· ExtUtils::MakeMaker ay na-upgrade mula sa bersyon 6.66 sa 6.98.

· ExtUtils::Miniperl ay na-upgrade mula sa bersyon sa 1.01.

· ExtUtils::ParseXS ay na-upgrade mula sa bersyon 3.18 sa 3.24.

· ExtUtils::Typemaps ay na-upgrade mula sa bersyon 3.19 sa 3.24.

· ExtUtils::XSSymSet ay na-upgrade mula sa bersyon 1.2 hanggang 1.3.

· Ang tampok ay na-upgrade mula sa bersyon 1.32 hanggang 1.36.

· Ang mga field ay na-upgrade mula sa bersyon 2.16 hanggang 2.17.

· File::Na-upgrade ang Basename mula sa bersyon 2.84 hanggang 2.85.

· Ang File::Copy ay na-upgrade mula sa bersyon 2.26 hanggang 2.29.

· File::DosGlob ay na-upgrade mula sa bersyon 1.10 hanggang 1.12.

· File::Fetch ay na-upgrade mula sa bersyon 0.38 hanggang 0.48.

· Ang File::Find ay na-upgrade mula sa bersyon 1.23 hanggang 1.27.

· Ang File::Glob ay na-upgrade mula sa bersyon 1.20 hanggang 1.23.

· Ang File::Spec ay na-upgrade mula sa bersyon 3.40 hanggang 3.47.

· File::Temp ay na-upgrade mula sa bersyon 0.23 hanggang 0.2304.

· Ang FileCache ay na-upgrade mula sa bersyon 1.08 hanggang 1.09.

· Filter::Si Simple ay na-upgrade mula sa bersyon 0.89 hanggang 0.91.

· Ang Filter::Util::Call ay na-upgrade mula sa bersyon 1.45 hanggang 1.49.

· Getopt::Matagal nang na-upgrade mula sa bersyon 2.39 hanggang 2.42.

· Getopt::Na-upgrade ang Std mula sa bersyon 1.07 hanggang 1.10.

· Ang Hash::Util::FieldHash ay na-upgrade mula sa bersyon 1.10 hanggang 1.15.

· HTTP::Tiny ay na-upgrade mula sa bersyon 0.025 sa 0.043.

· I18N::Na-upgrade ang Langinfo mula sa bersyon 0.10 hanggang 0.11.

· Na-upgrade ang I18N::LangTags mula sa bersyon 0.39 hanggang 0.40.

· kung na-upgrade mula sa bersyon 0.0602 hanggang 0.0603.

· inc::latest ay na-upgrade mula sa bersyon 0.4003 hanggang 0.4205. NOTE: inc::latest is
hindi na ginagamit at maaaring alisin mula sa hinaharap na bersyon ng Perl.

· Ang integer ay na-upgrade mula sa bersyon 1.00 hanggang 1.01.

· Na-upgrade ang IO mula sa bersyon 1.28 hanggang 1.31.

· Na-upgrade ang IO::Compress::Gzip at mga kaibigan mula sa bersyon 2.060 hanggang 2.064.

· IPC::Cmd ay na-upgrade mula sa bersyon 0.80 sa 0.92.

· IPC::Open3 ay na-upgrade mula sa bersyon 1.13 sa 1.16.

· Ang IPC::SysV ay na-upgrade mula sa bersyon 2.03 hanggang 2.04.

· Ang JSON::PP ay na-upgrade mula sa bersyon 2.27202 hanggang 2.27203.

· Listahan::Util ay na-upgrade mula sa bersyon 1.27 sa 1.38.

· Na-upgrade ang locale mula sa bersyon 1.02 hanggang 1.03.

· Lokal::Ang mga code ay na-upgrade mula sa bersyon 3.25 hanggang 3.30.

· Lokal::Ang Maketext ay na-upgrade mula sa bersyon 1.23 hanggang 1.25.

· Math::BigInt ay na-upgrade mula sa bersyon 1.9991 sa 1.9993.

· Ang Math::BigInt::FastCalc ay na-upgrade mula sa bersyon 0.30 hanggang 0.31.

· Math::Ang BigRat ay na-upgrade mula sa bersyon 0.2604 hanggang 0.2606.

· Ang MIME::Base64 ay na-upgrade mula sa bersyon 3.13 hanggang 3.14.

· Module:: Ang build ay na-upgrade mula sa bersyon 0.4003 hanggang 0.4205. TANDAAN: Module::Build ay
hindi na ginagamit at maaaring alisin mula sa hinaharap na bersyon ng Perl.

· Module::Ang CoreList ay na-upgrade mula sa bersyon 2.89 hanggang 3.10.

· Module:: Ang pag-load ay na-upgrade mula sa bersyon 0.24 hanggang 0.32.

· Module::Load::Conditional ay na-upgrade mula sa bersyon 0.54 hanggang 0.62.

· Module::Ang metadata ay na-upgrade mula sa bersyon 1.000011 hanggang 1.000019.

· Ang mro ay na-upgrade mula sa bersyon 1.11 hanggang 1.16.

· Net::Ping ay na-upgrade mula sa bersyon 2.41 sa 2.43.

· Ang Opcode ay na-upgrade mula sa bersyon 1.25 hanggang 1.27.

· Package::Na-upgrade ang mga Constant mula sa bersyon 0.02 hanggang 0.04. TANDAAN:
Package::Constants ay hindi na ginagamit at maaaring alisin mula sa hinaharap na bersyon ng Perl.

· Params::Na-upgrade ang check mula sa bersyon 0.36 hanggang 0.38.

· Ang magulang ay na-upgrade mula sa bersyon 0.225 hanggang 0.228.

· Parse::CPAN::Meta ay na-upgrade mula sa bersyon 1.4404 hanggang 1.4414.

· Perl::OSType ay na-upgrade mula sa bersyon 1.003 hanggang 1.007.

· Ang perlfaq ay na-upgrade mula sa bersyon 5.0150042 hanggang 5.0150044.

· Ang PerlIO ay na-upgrade mula sa bersyon 1.07 hanggang 1.09.

· Ang PerlIO::encoding ay na-upgrade mula sa bersyon 0.16 hanggang 0.18.

· Ang PerlIO::scalar ay na-upgrade mula sa bersyon 0.16 hanggang 0.18.

· Ang PerlIO::via ay na-upgrade mula sa bersyon 0.12 hanggang 0.14.

· Pod::Na-upgrade ang Escapes mula sa bersyon 1.04 hanggang 1.06.

· Pod:: Ang mga function ay na-upgrade mula sa bersyon 1.06 hanggang 1.08.

· Pod::Html ay na-upgrade mula sa bersyon 1.18 sa 1.21.

· Pod::Parser ay na-upgrade mula sa bersyon 1.60 sa 1.62.

· Pod::Ang Perldoc ay na-upgrade mula sa bersyon 3.19 hanggang 3.23.

· Pod::Ang paggamit ay na-upgrade mula sa bersyon 1.61 hanggang 1.63.

· Ang POSIX ay na-upgrade mula sa bersyon 1.32 hanggang 1.38_03.

· muling na-upgrade mula sa bersyon 0.23 hanggang 0.26.

· Ang Safe ay na-upgrade mula sa bersyon 2.35 hanggang 2.37.

· Scalar::Util ay na-upgrade mula sa bersyon 1.27 sa 1.38.

· Ang SDBM_File ay na-upgrade mula sa bersyon 1.09 hanggang 1.11.

· Ang socket ay na-upgrade mula sa bersyon 2.009 hanggang 2.013.

· Ang Storable ay na-upgrade mula sa bersyon 2.41 hanggang 2.49.

· Ang mahigpit ay na-upgrade mula sa bersyon 1.07 hanggang 1.08.

· Ang mga sub ay na-upgrade mula sa bersyon 1.01 hanggang 1.02.

· Sys::Na-upgrade ang hostname mula sa bersyon 1.17 hanggang 1.18.

· Sys::Syslog ay na-upgrade mula sa bersyon 0.32 hanggang 0.33.

· Termino::Na-upgrade ang Cap mula sa bersyon 1.13 hanggang 1.15.

· Termino:: Ang ReadLine ay na-upgrade mula sa bersyon 1.12 hanggang 1.14.

· Pagsubok:: Ang Harness ay na-upgrade mula sa bersyon 3.26 hanggang 3.30.

· Pagsubok::Si Simple ay na-upgrade mula sa bersyon 0.98 hanggang 1.001002.

· Text::ParseWords ay na-upgrade mula sa bersyon 3.28 sa 3.29.

· Text::Ang mga tab ay na-upgrade mula sa bersyon 2012.0818 hanggang 2013.0523.

· Text::Na-upgrade ang Wrap mula sa bersyon 2012.0818 hanggang 2013.0523.

· Ang thread ay na-upgrade mula sa bersyon 3.02 hanggang 3.04.

· Thread::Na-upgrade ang Queue mula sa bersyon 3.02 hanggang 3.05.

· Ang mga thread ay na-upgrade mula sa bersyon 1.86 hanggang 1.93.

· mga thread::shared ay na-upgrade mula sa bersyon 1.43 hanggang 1.46.

· Tie::Ang array ay na-upgrade mula sa bersyon 1.05 hanggang 1.06.

· Tie::Na-upgrade ang file mula sa bersyon 0.99 hanggang 1.00.

· Tie::Ang hash ay na-upgrade mula sa bersyon 1.04 hanggang 1.05.

· Tie::Na-upgrade ang Scalar mula sa bersyon 1.02 hanggang 1.03.

· Tie::StdHandle ay na-upgrade mula sa bersyon 4.3 hanggang 4.4.

· Oras::Na-upgrade ang HiRes mula sa bersyon 1.9725 hanggang 1.9726.

· Oras::Piece ay na-upgrade mula sa bersyon 1.20_01 sa 1.27.

· Unicode::Na-upgrade ang Collate mula sa bersyon 0.97 hanggang 1.04.

· Unicode:: Ang Normalize ay na-upgrade mula sa bersyon 1.16 hanggang 1.17.

· Unicode:: Ang UCD ay na-upgrade mula sa bersyon 0.51 hanggang 0.57.

· Ang utf8 ay na-upgrade mula sa bersyon 1.10 hanggang 1.13.

· Ang bersyon ay na-upgrade mula sa bersyon 0.9902 hanggang 0.9908.

· Ang vmsish ay na-upgrade mula sa bersyon 1.03 hanggang 1.04.

· Ang mga babala ay na-upgrade mula sa bersyon 1.18 hanggang 1.23.

· Ang Win32 ay na-upgrade mula sa bersyon 0.47 hanggang 0.49.

· XS::Typemap ay na-upgrade mula sa bersyon 0.10 sa 0.13.

· Ang XSLoader ay na-upgrade mula sa bersyon 0.16 hanggang 0.17.

dokumentasyon


bago dokumentasyon
perlrepository

Inalis ang dokumentong ito (sa totoo lang, pinalitan ng pangalan ang perlgit at binigyan ng malaking pag-aayos) sa Perl
v5.14, na nagdudulot sa mga website ng dokumentasyon ng Perl na ipakita ang luma na na bersyon sa Perl
v5.12 bilang pinakabagong bersyon. Ito ay naibalik na ngayon sa stub form, na nagtuturo sa mga mambabasa sa
kasalukuyang impormasyon.

Mga Pagbabago sa Nabubuhay dokumentasyon
perldata

· Ang mga bagong seksyon ay naidagdag upang idokumento ang bagong index/value array slice at key/value
syntax ng hash slice.

perldebguts

· Ang "DB::goto" at "DB::lsub" debugger subroutines ay dokumentado na ngayon. [perl #77680]

perlexperiment

· Ang "\s" na tumutugma sa "\cK" ay minarkahang eksperimental.

· ang mga ithread ay tinanggap sa v5.8.0 (ngunit hindi na pinanghihinaan ng loob noong v5.20.0).

· Ang mga long double ay hindi itinuturing na eksperimental.

· Code sa mga regular na expression, regular na expression backtracking verbs, at lvalue
hindi na nakalista bilang eksperimental ang mga subroutine. (Nakakaapekto rin ito sa perlre at
perlsub.)

perlfunc

· Tandaan ngayon ng "chop" at "chomp" na maaari nilang i-reset ang hash iterator.

· Ang pangangasiwa ng mga argumento ng "exec" ay mas malinaw nang naidokumento.

· Ang "eval EXPR" ay mayroon na ngayong mga caveat tungkol sa pagpapalawak ng mga numero ng floating point sa ilang lokal.

· Ang "goto EXPR" ay dokumentado na ngayon upang mahawakan ang isang expression na sinusuri sa isang code
reference na parang ito ay "goto &$coderef". Ang pag-uugali na ito ay hindi bababa sa sampung taong gulang.

· Mula noong Perl v5.10, naging posible para sa mga subroutine sa @INC na magbalik ng reference
sa isang scalar na may hawak na paunang source code upang i-prepend sa file. Ito na ngayon
dokumentado.

· Ang dokumentasyon ng "ref" ay na-update para irekomenda ang paggamit ng "blessed", "isa"
at "reftype" kapag nakikitungo sa mga sanggunian sa mga pinagpalang bagay.

perlguts

· Maraming maliliit na pagbabago ang ginawa upang ipakita ang mga pagbabagong ginawa sa perl internals in
ang paglabas na ito.

· Ang mga bagong seksyon sa Read-Only Values ​​at Copy on Write ay naidagdag.

perlhack

· Ang seksyong Super Quick Patch Guide ay na-update.

perlhacktips

· Ang dokumentasyon ay na-update upang isama ang ilang higit pang mga halimbawa ng paggamit ng "gdb".

perllexwarn

· Ang dokumentasyong perllexwarn na ginamit upang ilarawan ang hierarchy ng mga kategorya ng babala
naiintindihan ng mga babalang pragma. Ang paglalarawang iyon ay inilipat na ngayon sa mga babala
mismong dokumentasyon, na iniiwan ang perllexwarn bilang isang stub na tumuturo dito. Itong pagbabago
pinagsasama-sama ang lahat ng dokumentasyon para sa mga babalang leksikal sa isang lugar.

perllocale

· Binabanggit na ngayon ng dokumentasyon fc() at "\F", at may kasamang maraming paglilinaw at
pagwawasto sa pangkalahatan.

perlop

· Ang disenyo ng wika ng Perl ay palaging nangangailangan ng mga monomorphic operator. Ito na ngayon
tahasang binanggit.

perlopentut

· Ang "bukas" na tutorial ay ganap na muling isinulat ni Tom Christiansen, at ngayon ay nakatutok
sa saklaw lamang ang mga pangunahing kaalaman, sa halip na magbigay ng komprehensibong sanggunian sa lahat
mga bagay na nabubuksan. Ang muling pagsulat na ito ay dumating bilang resulta ng isang masiglang talakayan sa
Ang mga perl5-porter ay nagsimula sa pamamagitan ng isang hanay ng mga pagpapabuti na isinulat ni Alexander Hartmaier sa
ang umiiral na perlopentut. Isang "higit pa sa gusto mong malaman tungkol sa "bukas"" na dokumento
maaaring sumunod sa mga kasunod na bersyon ng perl.

perlre

· Ang katotohanan na ang regexp engine ay hindi nagsisikap na tawagan ang (?{}) at (??{}) constructs
anumang tinukoy na bilang ng beses (bagaman ito ay karaniwang DWIM kung sakaling matagumpay
tugma) ay naidokumento.

· Ang "/r" modifier (para sa hindi mapanirang pagpapalit) ay dokumentado na ngayon. [perl #119151]

· Ang dokumentasyon para sa "/x" at "(?# comment)" ay pinalawak at nilinaw.

perlreguts

· Ang dokumentasyon ay na-update sa liwanag ng mga kamakailang pagbabago sa regcomp.c.

perlsub

· Ang pangangailangang ideklara ang mga recursive function na may mga prototype para sa prototype
na parangalan sa recursive na tawag ay dokumentado na ngayon. [perl #2726]

· Isang listahan ng mga subroutine na pangalan na ginamit ng perl na pagpapatupad ay kasama na ngayon. [perl
# 77680]

perltrap

· Mayroon na ngayong isang seksyon ng JavaScript.

perlunicode

· Ang dokumentasyon ay na-update upang ipakita ang mga pagbabago sa "Bidi_Class" sa Unicode 6.3.

perlvar

· Isang bagong seksyon na nagpapaliwanag sa mga isyu sa pagganap ng $`, $& at $', kabilang ang
mga workaround at pagbabago sa iba't ibang bersyon ng Perl, ay naidagdag.

· Tatlong English variable na pangalan na matagal nang naidokumento ngunit hindi talaga umiiral
ay tinanggal mula sa dokumentasyon. Ang mga ito ay $OLD_PERL_VERSION, $OFMT, at
$ARRAY_BASE.

(Sa totoo lang, "OLD_PERL_VERSION" ang umiiral, simula sa rebisyong ito, ngunit nanatili
undocumented hanggang perl 5.22.0.)

perlxs

· Maraming problema sa halimbawang "MY_CXT" ang naayos na.

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

· tanggalin ang argumento ay index/value array slice, gumamit ng array slice

(F) Ginamit mo ang index/value array slice syntax (%array[...]) bilang argumento sa "tanggalin".
Malamang ang ibig mong sabihin ay @array[...] na may @ na simbolo sa halip.

· Ang delete argument ay key/value hash slice, gumamit ng hash slice

(F) Ginamit mo ang key/value hash slice syntax (%hash{...}) bilang argumento para "tanggalin".
Malamang ang ibig mong sabihin ay @hash{...} na may @ na simbolo sa halip.

· Magical list constants ay hindi suportado

(F) Nagtalaga ka ng mahiwagang array sa isang stash element, at pagkatapos ay sinubukan mong gamitin ang
subroutine mula sa parehong slot. Hinihiling mo kay Perl na gawin ang isang bagay na hindi nito magagawa,
ang mga detalye ay maaaring magbago sa pagitan ng mga bersyon ng Perl.

· Idinagdag ang Setting $/ sa isang %s reference ay ipinagbabawal

bago Babala

· Eksperimento ang %s sa sanggunian:

Ang tampok na "auto-deref" ay pang-eksperimento.

Simula sa v5.14.0, posibleng gumamit ng push, pop, keys, at iba pang built-in
gumagana hindi lamang sa mga pinagsama-samang uri, ngunit sa mga sanggunian sa mga ito. Ang tampok ay hindi
deployed sa orihinal na nilalayon nitong detalye, at ngayon ay maaaring maging kalabisan sa
postfix dereferencing. Ito ay palaging nakategorya bilang isang pang-eksperimentong tampok, at
sa v5.20.0 ay nagdadala ng babala bilang tulad.

Ibibigay na ngayon ang mga babala sa oras ng pag-compile kapag natukoy ang mga operasyong ito.

hindi kung $] >= 5.01908, mga babala => "experimental::autoderef";

Isaalang-alang, gayunpaman, palitan ang paggamit ng mga tampok na ito, dahil maaari nilang baguhin ang pag-uugali
muli bago maging matatag.

· Ang isang pagkakasunud-sunod ng maraming mga puwang sa isang kahulugan ng charnames alias ay hindi na ginagamit

Hindi na ginagamit ang trailing white-space sa isang charnames alias na kahulugan

Ang dalawang babala sa paghinto sa paggamit na ito na kinasasangkutan ng "\N{...}" ay hindi wastong ipinatupad. sila
ay hindi nagbabala bilang default (ngayon ay ginagawa na nila) at hindi maaaring maging nakamamatay sa pamamagitan ng "use warnings
FATAL => 'deprecated'" (kaya na nila ngayon).

· Itinatapon ng attribute prototype(%s) ang naunang katangian ng prototype sa parehong sub

(W misc) Isang sub ang idineklara bilang "sub foo : prototype(A) : prototype(B) {}", para sa
halimbawa. Dahil ang bawat sub ay maaari lamang magkaroon ng isang prototype, ang (mga) naunang deklarasyon ay
itinapon habang inilalapat ang huli.

· Di-wastong \0 character sa %s para sa %s: %s\0%s

(W syscalls) Naka-embed na \0 character sa mga pathname o iba pang argumento ng system call
gumawa ng babala sa 5.20. Ang mga bahagi pagkatapos ng \0 ay dating hindi pinansin ng system
tawag.

· Itinugma ang non-Unicode code point 0x%X laban sa Unicode property; maaaring hindi portable.

Pinapalitan nito ang mensaheng "Ang code point 0x%X ay hindi Unicode, lahat ng \p{} ay nabigo; lahat
Ang \P{} ay nagtagumpay."

· Nawawala ang ']' sa prototype para sa %s : %s

(W illegalproto) Sinimulan ang isang pagpapangkat sa "[" ngunit hindi isinara ng "]".

· Posibleng isyu ng precedence sa control flow operator

(W syntax) May posibleng problema sa paghahalo ng isang control flow operator
(hal. "return") at isang low-precedence operator tulad ng "o". Isaalang-alang:

sub { ibalik ang $a o $b; }

Ito ay na-parse bilang:

sub { (ibalik ang $a) o $b; }

Na kung saan ay epektibo lamang:

sub { return $a; }

Gumamit ng mga panaklong o ang high-precedence na variant ng operator.

Tandaan na maaari rin itong ma-trigger para sa mga construct tulad ng:

sub { 1 kung mamatay; }

· Ang postfix dereference ay eksperimental

(S experimental::postderef) Ang babalang ito ay ipapalabas kung gagamitin mo ang eksperimental
postfix dereference syntax. Pigilan lang ang babala kung gusto mong gamitin ang
feature, ngunit alam mong sa paggawa nito ay nanganganib kang gumamit ng isang eksperimental
tampok na maaaring magbago o maalis sa hinaharap na bersyon ng Perl:

walang babala "experimental::postderef";
gamitin ang tampok na "postderef", "postderef_qq";
$ref->$*;
$aref->@*;
$aref->@[@indices];
... atbp ...

· Prototype na '%s' na na-override ng attribute na 'prototype(%s)' sa %s

(W prototype) Isang prototype ang idineklara sa parehong panaklong pagkatapos ng sub name at
sa pamamagitan ng katangian ng prototype. Ang prototype sa panaklong ay walang silbi, dahil ito ay
ay mapalitan ng prototype mula sa attribute bago pa man ito magamit.

· Ang halaga ng scalar @%s[%s] ay mas mahusay na isinulat bilang $%s[%s]

(W syntax) Sa kontekstong scalar, gumamit ka ng array index/value slice (ipinahiwatig ng %)
upang pumili ng isang elemento ng isang array. Sa pangkalahatan, mas mahusay na humingi ng scalar
halaga (ipinahiwatig ng $). Ang pagkakaiba ay palaging kumikilos si $foo[&bar] na parang a
scalar, kapwa sa halagang ibinabalik nito at kapag sinusuri ang argumento nito, habang
Nagbibigay ang %foo[&bar] ng konteksto ng listahan sa subscript nito, na makakagawa ng mga kakaibang bagay kung
isang subscript lang ang inaasahan mo. Kapag tinawag sa konteksto ng listahan, ibinabalik din nito ang
index (kung ano ang ibinabalik ng &bar) bilang karagdagan sa halaga.

· Ang halaga ng scalar @%s{%s} ay mas mahusay na isinulat bilang $%s{%s}

(W syntax) Sa kontekstong scalar, gumamit ka ng hash key/value slice (ipinahiwatig ng %) upang
pumili ng isang elemento ng isang hash. Sa pangkalahatan, mas mahusay na humingi ng scalar value
(ipinahiwatig ng $). Ang pagkakaiba ay ang $foo{&bar} ay palaging kumikilos na parang scalar,
kapwa sa halagang ibinabalik nito at kapag sinusuri ang argumento nito, habang ang @foo{&bar} at
nagbibigay ng konteksto ng listahan sa subscript nito, na maaaring gumawa ng mga kakaibang bagay kung ikaw ay
umaasa lamang ng isang subscript. Kapag tinawag sa konteksto ng listahan, ibinabalik din nito ang susi
karagdagan sa halaga.

· Ang pagtatakda ng $/ sa isang reference sa %s bilang isang anyo ng slurp ay hindi na ginagamit, na itinuturing bilang undef

· Hindi inaasahang paglabas %u

(S) exit () ay tinawag o ang script ay natapos nang maganda kapag
Ang "PERL_EXIT_WARN" ay itinakda sa "PL_exit_flags".

· Hindi inaasahang exit failure %d

(S) Isang hindi nahuli mamatay () ay tinawag noong ang "PERL_EXIT_WARN" ay itinakda sa "PL_exit_flags".

· Ang paggamit ng mga literal na control character sa mga variable na pangalan ay hindi na ginagamit

(D hindi na ginagamit) Paggamit ng mga literal na control character sa source para sumangguni sa ^FOO
ang mga variable, tulad ng $^X at ${^GLOBAL_PHASE} ay hindi na ginagamit. Naaapektuhan lang nito ang code
tulad ng $\cT, kung saan ang \cT ay isang kontrol (tulad ng isang "SOH") sa source code: ${"\cT"} at $^T
mananatiling may bisa.

· Walang silbi ang paggamit ng grediness modifier

Inaayos nito ang [Perl #42957].

Mga Pagbabago sa Nabubuhay Diagnostics
· Ang mga babala at error mula sa regexp engine ay malinis na sa UTF-8.

· Ang mensahe ng error na "Hindi kilalang kundisyon ng switch" ay may kaunting pagbabago. Ang error na ito
nagti-trigger kapag may hindi alam na kundisyon sa isang "(?(foo))" na kondisyon. Ang pagkakamali
mensaheng ginamit upang basahin:

Hindi alam na kundisyon ng switch (?(%s sa regex;

Ngunit kung ano ang maaaring maging %s ay higit sa lahat ay nasa swerte. Para sa "(?(foobar))", maaaring nakita mo na
"fo" o "f". Para sa mga character na Unicode, karaniwang makakakuha ka ng sirang string. Ang
ang mensahe ay binago upang mabasa:

Hindi alam na kundisyon ng switch (?(...)) sa regex;

Bukod pa rito, ang '<-- HERE' marker sa error ay tuturo na ngayon sa tamang lugar sa
ang regex.

· Ang "%s "\x%X" ay hindi namamapa sa Unicode" na babala ay tama na ngayong nakalista bilang isang malubha
babala sa halip na bilang isang nakamamatay na pagkakamali.

· Sa mga bihirang pagkakataon, maaaring makakuha ng "Hindi mapipilit ang readonly REF sa string"
sa halip na ang karaniwang "Pagbabago ng isang read-only na halaga". Ang kahaliling error na ito
ang mensahe ay tinanggal.

· "Hindi maliwanag na paggamit ng * nalutas bilang operator *": Ito at mga katulad na babala tungkol sa "%" at
Ang "&" ay dating nangyayari sa ilang pagkakataon kung saan walang operator ng uri na binanggit,
kaya ang babala ay ganap na mali. Naayos na ito [perl #117535, #76910].

· Ang mga babala tungkol sa maling nabuong mga subroutine na prototype ay mas pare-pareho na ngayon sa kung paano ang
nai-render ang mga prototype. Ang ilan sa mga babalang ito ay puputulin ang mga prototype na naglalaman
nulls. Sa ibang mga kaso ang isang babala ay pipigilan ang isa pa. Ang babala tungkol sa ilegal
hindi na sinasabi ng mga character sa mga prototype ang "pagkatapos ng '_'" kung nauna ang masamang karakter
ang salungguhit.

· Ang mga panuntunan sa pagtitiklop ng Perl ay hindi napapanahon para sa 0x%X; mangyaring gamitin ang perlbug utility sa
ulat; sa regex; minarkahan ng <-- DITO sa m/%s/

Ang mensaheng ito ay nasa kategorya na lamang ng regexp, at wala sa hindi na ginagamit na kategorya.
Isa pa rin itong default (ibig sabihin, malubhang) babala [perl #89648].

· %%s[%s] sa kontekstong scalar na mas mahusay na isinulat bilang $%s[%s]

Ang babalang ito ay nangyayari na ngayon para sa anumang %array[$index] o %hash{key} na kilala na nasa scalar
konteksto sa oras ng pag-compile. Dati ay binansagan itong "Scalar value %%s[%s] na mas mahusay
isinulat bilang $%s[%s]".

· Hindi nakikilala ang kundisyon ng switch sa regex; minarkahan ng <-- DITO sa m/%s/:

Ang paglalarawan para sa diagnostic na ito ay pinalawak upang masakop ang lahat ng mga kaso kung saan ang
maaaring mangyari ang babala. Nagkaroon din ng mga isyu sa pagpoposisyon ng arrow indicator
nalutas.

· Ang mga mensahe ng error para sa "my($a?$b$c)" at "my(do{})" ay binabanggit na ngayon ang "conditional
expression" at "do block", ayon sa pagkakabanggit, sa halip na basahin ang 'Hindi maipahayag na null
operasyon sa "aking"'.

· Kapag ang "use re "debug"" ay nagpatupad ng regex na naglalaman ng backreference, ang debugging
ipinapakita na ngayon ng output kung anong string ang itinutugma.

· Ang ngayon ay nakamamatay na mensahe ng error na "Character na sumusunod sa "\c" ay dapat na ASCII" ay na-reword
dahil ang "Character na sumusunod sa "\c" ay dapat na napi-print na ASCII" upang bigyang-diin iyon sa "\cX", X
Dapat ay isang nalilimbag (hindi kontrol) ASCII character.

Gamit Mga Pagbabago


a2p

· Isang posibleng pag-crash mula sa isang off-by-one na error kapag sinusubukang i-access bago ang simula
ng isang buffer ay naayos na. [perl #120244]

bisect.pl

Ang tool ng git bisection Porting/bisect.pl ay nagkaroon ng maraming pagpapahusay.

Ibinibigay ito bilang bahagi ng pamamahagi ng pinagmulan ngunit hindi naka-install dahil hindi ito
self-contained dahil umaasa ito sa pagpapatakbo mula sa loob ng isang git checkout. Tandaan din na ito
hindi nagtatangkang ayusin ang mga pagsubok, iwasto ang mga runtime na bug o gumawa ng isang bagay na kapaki-pakinabang upang mai-install -
ang layunin nito ay gumawa ng kaunting mga pagbabago upang makakuha ng anumang makasaysayang rebisyon ng interes na mabuo
at tumakbo nang mas malapit hangga't maaari sa "as-was", at sa gayon ay gawing madaling gamitin ang "git bisect".

· Maaaring opsyonal na patakbuhin ang test case na may timeout.

· Maaari na ngayong tumakbo sa lugar sa isang malinis na git checkout.

· Maaaring patakbuhin ang test case sa ilalim ng "valgrind".

· Maaaring maglapat ng mga patch at pag-aayos na ibinigay ng user sa source checkout bago buuin.

· Ngayon ay may mga fixup upang paganahin ang pagbuo ng ilang higit pang makasaysayang hanay ng bleadperl, na
ay maaaring maging kapaki-pakinabang para sa pagtukoy sa mga pinagmulan ng mga bug o pagbabago ng gawi.

find2perl

· Hinahawakan na ngayon ng find2perl ang "?" tama ang mga wildcard. [perl #113054]

perlbug

· perlbug mayroon na ngayong opsyon na "-p" para sa pag-attach ng mga patch na may ulat ng bug.

· Ang perlbug ay binago upang maibigay ang template ng ulat na may CRLF line endings on
Windows. [perl #121277 ]

· Gumagawa na ngayon ang perlbug ng kaunting pagpapalagay hangga't maaari tungkol sa pag-encode ng ulat.
Ito ay malamang na magbago sa hinaharap upang ipalagay ang UTF-8 bilang default ngunit payagan ang isang user
override.

Configuration at Pagtitipon


· Ang Makefile.PL para sa SDBM_File ngayon ay bumubuo ng isang mas mahusay Makefile, na umiiwas sa isang lahi
kondisyon sa panahon ng parallel makes, na maaaring maging sanhi ng pagbagsak ng build. Ito ang
huling kilalang magkatulad na gumawa ng problema (sa *nix platform), at samakatuwid naniniwala kami na a
Ang parallel make ay dapat na ngayon ay laging walang error.

· installperl at installmanAng paghawak ng opsyon ni ay na-refactored upang magamit ang Getopt::Long.
Parehong ginagamit ng Makefile "i-install" ang mga target, at hindi naka-install, kaya ang mga ito
ang mga pagbabago ay malamang na makakaapekto lamang sa mga custom na script ng pag-install.

· Ang mga pagpipilian sa solong titik ay mayroon na ngayong mahahabang pangalan.

· Ang mga di-wastong opsyon ay tinanggihan na ngayon.

· Ang mga argumento ng command line na hindi mga opsyon ay tinatanggihan na ngayon.

· Ang bawat isa ay mayroon na ngayong opsyon na "--help" upang ipakita ang mensahe ng paggamit.

Ang pag-uugali para sa lahat ng wastong nakadokumentong invocation ay hindi nagbabago.

· Kung saan posible, iniiwasan na ngayon ng build ang mga recursive invocation ng gumawa kapag nagtatayo ng dalisay-
Perl extension, nang hindi inaalis ang anumang parallelism mula sa build. Kasalukuyang nasa 80
ang mga extension ay maaaring direktang iproseso ng make_ext.pl tool, ibig sabihin ay 80
mga panawagan ng gumawa at 160 invocations ng miniperl ay hindi na ginawa.

· Ang build system ngayon ay gumagana nang tama kapag nag-compile sa ilalim ng GCC o Clang na may link-time
pinagana ang pag-optimize (ang opsyong "-flto"). [perl #113022]

· Mga natatanging pangalan ng library na may "d_libname_unique".

Kapag kino-compile ang perl gamit ang opsyong ito, pinangalanan ang mga file ng library para sa XS modules
isang bagay na "natatangi" -- halimbawa, nagiging Hash/Util/Util.so
Hash/Util/PL_Hash__Util.so. Ang pag-uugali na ito ay katulad ng kung ano ang kasalukuyang nangyayari sa
VMS, at nagsisilbing batayan para sa Android port.

· "sysroot" na opsyon upang ipahiwatig ang lohikal na root directory sa ilalim ng gcc at clang.

Kapag bumubuo gamit ang hanay ng opsyong ito, parehong hinahanap ng Configure at ng mga compiler ang lahat
mga header at library sa ilalim ng bagong sysroot na ito, sa halip na /.

Ito ay isang malaking time saver kung cross-compile, ngunit makakatulong din sa mga native na build kung
may mga hindi karaniwang lokasyon ang mga file ng iyong toolchain.

· Ang cross-compilation na modelo ay na-renovate. Mayroong ilang mga bagong opsyon, at ilan
pabalik-hindi tugmang mga pagbabago:

Bumubuo na kami ngayon ng mga binary para sa miniperl at generate_uudmap na gagamitin sa host, sa halip
kaysa sa pagpapatakbo ng bawat miniperl na tawag sa target; nangangahulugan ito na, maikli sa 'gumawa ng pagsubok',
hindi na namin kailangan ng access sa target na system kapag tapos na ang I-configure. Maaari kang magbigay
na-built na mga binary sa pamamagitan ng "hostperl" at "hostgenerate" na mga opsyon upang I-configure.

Bukod pa rito, kung nagta-target ng isang platform ng EBCDIC mula sa isang host ng ASCII, o kabaliktaran,
kailangang patakbuhin ang I-configure gamit ang "-Uhostgenerate", upang ipahiwatig na dapat ang generate_uudmap
tumakbo sa target.

Sa wakas, mayroon ding paraan para matapos ang I-configure nang maaga, pagkatapos na gawin ang
host binary, sa pamamagitan ng cross-compile nang hindi tinukoy ang isang "targethost".

Kasama sa mga hindi tugmang pagbabago ang hindi na paggamit ng xconfig.h, xlib, o Cross.pm, kaya
Ang mga canned config file at Makefiles ay kailangang i-update.

· Kaugnay sa itaas, mayroon na ngayong paraan ng pagtukoy sa lokasyon ng sh (o
katumbas) sa target na sistema: "targetsh".

Halimbawa, ang Android ay may sh nito sa /system/bin/sh, kaya kung nagko-cross-compile mula sa higit pa
normal na Unixy system na may sh in / Bin / SH, "targetsh" ay magtatapos bilang /system/bin/sh, at
"sh" bilang /bin/sh.

· Bilang default, gcc 4.9 ay gumagawa ng ilang mga pag-optimize na sumisira sa perl. Ang -fwrapv opsyon
hindi pinapagana ang mga pag-optimize na iyon (at malamang na iba pa), kaya para sa gcc 4.3 at mas bago (mula noong
ang maaaring may mga katulad na problema na nakatago din sa mga mas lumang bersyon, ngunit -fwrapv ay
nasira bago ang 4.3, at ang mga pag-optimize ay malamang na hindi mawawala), I-configure ang nagdadagdag ngayon
-fwrapv maliban kung humiling ang user -fno-wrapv, na hindi pinapagana -fwrapv, O
-fsanitize=undefined, na nagpapaikot sa mga pag-apaw -fwrapv binabalewala sa mga error sa runtime.
[perl #121505 ]

Pagsubok


· Ang "test.valgrind" make target ngayon ay nagpapahintulot sa mga pagsubok na patakbuhin nang magkatulad. Ang target na ito
pinapayagan ang test suite ng Perl na patakbuhin sa ilalim ng Valgrind, na nakakakita ng ilang uri ng C
mga error sa programming, kahit na may malaking gastos sa oras ng pagpapatakbo. Sa angkop na hardware,
na nagbibigay-daan sa parallel execution claws back ng marami sa karagdagang gastos na iyon. [perl #121431]

· Iba't ibang pagsubok sa t/porting/ ay hindi na nilalaktawan kapag ang perl .git ang direktoryo ay
sa labas ng perl tree at itinuro ng $GIT_DIR. [perl #120505]

· Ang test suite ay hindi na nabigo kapag ang interactive na shell ng user ay nagpapanatili ng $PWD
variable ng kapaligiran, ngunit ang / Bin / SH ginagamit para sa pagpapatakbo ng mga pagsubok ay hindi.

Platform Suporta


bago Platform
Android
Ang Perl ay maaari na ngayong itayo para sa Android, alinman sa natively o sa pamamagitan ng cross-compilation, para sa
lahat ng tatlong kasalukuyang magagamit na mga arkitektura (ARM, MIPS, at x86), sa isang malawak na hanay ng
mga bersyon.

Bitrig
Idinagdag ang compile support para sa Bitrig, isang tinidor ng OpenBSD.

FreeMiNT
Ang suporta ay idinagdag para sa FreeMiNT, isang libreng open-source na OS para sa Atari ST system at
mga kahalili nito, batay sa orihinal na MiNT na opisyal na pinagtibay ng Atari.

Synology
Ipinapadala ng Synology ang mga NAS box nito na may lean Linux distribution (DSM) sa murang halaga
Mga CPU (tulad ng Marvell Kirkwood mv6282 - ARMv5tel o Freescale QorIQ P1022 ppc -
e500v2) hindi para sa mga workstation o development. Ang mga kahon na ito ay dapat na bumuo ngayon. Ang
Ang mga pangunahing problema ay ang hindi karaniwang lokasyon para sa mga tool.

Ipinagpatuloy Platform
"sfio"
Ang code na nauugnay sa pagsuporta sa "sfio" I/O system ay inalis.

Nagdagdag ang Perl 5.004 ng suporta para magamit ang native na API ng "sfio", ang Safe/Fast I/O ng AT&T
aklatan. Ang code na ito ay binuo pa rin gamit ang v5.8.0, kahit na may maraming mga pagsubok sa regression na nabigo,
ngunit hindi sinasadyang nasira bago ang paglabas ng v5.8.1, ibig sabihin ay hindi ito gumana
sa anumang bersyon ng Perl na inilabas mula noon. Sa mahigit isang dekada, wala kaming natanggap na bug
mga ulat tungkol dito, kaya malinaw na walang gumagamit ng functionality na ito sa alinman
bersyon ng Perl na sinusuportahan pa rin sa anumang antas.

AT&T 3b1
I-configure ang suporta para sa 3b1, na kilala rin bilang AT&T Unix PC (at ang katulad na AT&T
7300), ay tinanggal.

DG/UX
Ang DG/UX ay isang Unix na ibinebenta ng Data General. Ang huling release ay noong Abril 2001. Ito lamang
tumatakbo sa sariling hardware ng Data General.

EBCDIC
Sa kawalan ng isang regular na pinagmumulan ng mga ulat ng usok, ang code ay nilayon upang suportahan ang native
Ang mga platform ng EBCDIC ay aalisin mula sa perl bago ang 5.22.0.

Platform-Tukoy Mga Tala
Cygwin
· recv () sa isang konektadong hawakan ay pupunan ang ibinalik na address ng nagpadala
anuman ang nangyari sa gumaganang buffer. recv () ngayon ay gumagamit ng isang solusyon
katulad ng Win32 recv () wrapper at nagbabalik ng walang laman na string kapag pagbabalik-tanaw(2)
hindi binabago ang ibinigay na haba ng address. [perl #118843]

· Inayos ang isang build error sa cygwin.c sa Cygwin 1.7.28.

Pinangangasiwaan na ngayon ng mga pagsubok ang mga error na nangyayari kapag ang "cygserver" ay hindi tumatakbo.

GNU / Hurd
Ang library ng compatibility ng BSD na "libbsd" ay hindi na kailangan para sa mga build.

Linux
Hinahanap na ngayon ng file ng mga pahiwatig ang "libgdbm_compat" kung gusto rin ang "libgdbm" mismo.
Ang una ay hindi kailanman kapaki-pakinabang kung wala ang huli, at sa ilang mga pagkakataon, kasama na ito
maaari talagang maiwasan ang pagtatayo.

Mac OS
Pinarangalan na ngayon ng build system ang isang "ld" na setting na ibinibigay ng gumagamit na tumatakbo I-configure ang.

HatinggabiBSD
Ang "objformat" ay inalis mula sa bersyon 0.4-RELEASE ng MidnightBSD at naging
hindi na ginagamit sa mga naunang bersyon. Naging sanhi ito ng pagkakamali ng build environment
na-configure para sa "a.out" sa halip na "duwende". Ito ay naitama na ngayon.

Mixed-endian na mga platform
Ang code na sumusuporta sa "pack" at "unpack" na mga operasyon sa pinaghalong endian platform ay
inalis. Naniniwala kami na ang Perl ay matagal nang hindi nakakagawa sa halo-halong endian
mga arkitektura (tulad ng mga PDP-11), kaya hindi namin iniisip na ang pagbabagong ito ay makakaapekto sa anuman
mga platform na nagawang bumuo ng v5.18.0.

VMS
· Ang tampok na "PERL_ENV_TABLES" upang kontrolin ang populasyon ng %ENV sa perl start-up
ay nasira sa Perl 5.16.0 ngunit ngayon ay naayos na.

· Laktawan ang mga pagsusuri sa pag-access sa mga remote na in opendir(). [perl #121002]

· Isang pagsusuri para sa mga glob metacharacter sa isang path na ibinalik ng operator na "glob()".
pinalitan ng tseke para sa mga wildcard na character ng VMS. Nakakatipid ito ng makabuluhang
bilang ng mga hindi kinakailangang "lstat()" na tawag na nagiging ilang simpleng pagpapatakbo ng glob
60-80% mas mabilis.

Win32
· Ang "rename" at "link" sa Win32 ay nakatakda na ngayon ng $! sa ENOSPC at EDQUOT kung naaangkop.
[perl #119857]

· Ang BUILD_STATIC at ALL_STATIC makefile na mga opsyon para sa pag-link ng ilan o (halos) lahat
static na mga extension (sa perl520.dll, at sa isang hiwalay na perl-static.exe din)
ay nasira para sa MinGW build. Naayos na ito ngayon.

Ang ALL_STATIC na opsyon ay napabuti din upang isama ang Encode at Win32
mga extension (para sa parehong VC++ at MinGW build).

· Ang suporta para sa pagbuo gamit ang Visual C++ 2013 ay naidagdag. Sa kasalukuyan ay dalawa
posibleng mga pagkabigo sa pagsubok (tingnan ang "Pagsubok sa Perl sa Windows" sa perlwin32) na gagawin
sana maresolba agad.

· Ang pang-eksperimentong suporta para sa pagbuo gamit ang Intel C++ Compiler ay idinagdag. Ang
Ang nmake makefile (win32/Makefile) at ang dmake makefile (win32/makefile.mk) ay maaaring
ginamit. Ang isang "nmake test" ay hindi papasa sa oras na ito dahil sa cpan/CGI/t/url.t.

· Ang pagpatay sa isang process tree na may "kill" sa perlfunc at negatibong signal, ay nasira
simula sa 5.18.0. Sa bug na ito, palaging nagbabalik ng 0 ang "kill" para sa negatibong signal
kahit na para sa mga wastong PID, at walang mga prosesong winakasan. Naayos na ito [perl
#121230].

· Ang oras na kinuha upang bumuo ng perl sa Windows ay nabawasan nang malaki (time
ang pagtitipid sa rehiyon na 30-40% ay karaniwang nakikita) sa pamamagitan ng pagbawas sa bilang ng,
kadalasang nabigo, ang I/O ay tumatawag para sa bawat "require()" (for miniperl.exe lamang). [perl
#121119 ]

· Humigit-kumulang 15 minuto ng idle sleeping ay inalis mula sa pagpapatakbo ng "make test" dahil sa a
bug kung saan ang timeout monitor na ginamit para sa mga pagsubok ay hindi makansela kapag ang
nakumpleto ang pagsubok, at lumipas ang buong panahon ng pag-timeout bago patakbuhin ang susunod na pagsubok
file. [perl #121395 ]

· Sa isang perl na binuo nang walang pseudo-fork (pseudo-fork build ay hindi naapektuhan nito
bug), pagpatay sa isang puno ng proseso na may "kill()" at nagresulta sa negatibong signal
"kill()" na binabaligtad ang ibinalik na halaga. Halimbawa, kung ang "kill()" ay pumatay ng 1 proseso
tree PID pagkatapos ay nagbalik ito ng 0 sa halip na 1, at kung ang "kill()" ay naipasa 2 ay hindi wasto
Ang mga PID pagkatapos ay nagbalik ito ng 2 sa halip na 0. Ito ay malamang na ang kaso mula noong
Ang tampok na process tree kill ay ipinatupad sa Win32. Ito ay naitama na ngayon sa
sundin ang nakadokumentong pag-uugali. [perl #121230
]

· Kapag gumagawa ng isang 64-bit na perl, isang hindi nasimulang memorya ang nabasa miniperl.exe, ginamit
sa panahon ng proseso ng pagbuo, maaaring humantong sa isang 4GB wperl.exe nililikha. Ito ay
ngayon ay naayos na. (Tandaan na perl.exe mismo ay hindi naapektuhan, ngunit malinaw naman
wperl.exe sana tuluyang nasira.) [perl #121471
]

· Ang Perl ay maaari na ngayong itayo gamit ang gcc bersyon 4.8.1 mula sahttp://www.mingw.org>. Ito
ay dati nang nasira dahil sa maling kahulugan ng DllMain() sa isa sa mga perl's
source file. Kanina gcc naapektuhan din ang mga bersyon kapag ginagamit ang bersyon 4 ng
w32api package. Mga bersyon ng gcc magagamit mula sa
<http://mingw-w64.sourceforge.net/> hindi naapektuhan. [perl #121643
]

· Ang test harness ngayon ay walang mga pagkabigo kapag ang perl ay binuo sa isang FAT drive na may
Windows OS sa isang NTFS drive. [perl #21442
]

· Kapag nag-clone ng context stack in tinidor () pagtulad, Perl_cx_dup() babagsak
pag-access sa impormasyon ng parameter para sa mga entry sa stack ng konteksto na may kasamang no
mga parameter, tulad ng sa "&foo;". [perl #121721
]

· Ipinakilala ni perl #113536
, isang memory leak sa bawat
tawag sa "system" at backticks (" `` "), sa karamihan ng Win32 Perls simula sa 5.18.0
ay naayos na. Ang memory leak ay nangyari lamang kung pinagana mo ang psuedo-fork sa iyong
build ng Win32 Perl, at pinapatakbo ang build na iyon sa Server 2003 R2 o mas bagong OS.
Ang pagtagas ay hindi lumalabas sa WinXP SP3. [perl #121676
]

WinCE
· Ang pagbuo ng mga XS module ay higit na naibalik. Marami pa rin ang hindi (pa)
itatayo ngunit posible na ngayong bumuo ng Perl sa WinCE na may lamang ng ilang
karagdagang mga patch (sa Socket at ExtUtils::MakeMaker), sana ay maisama
lalong madaling panahon.

· Ang Perl ay maaari na ngayong itayo sa isang shot nang walang interbensyon ng user sa WinCE sa pamamagitan ng pagtakbo
"nmake -f Makefile.ce lahat".

Ang suporta para sa pagbuo gamit ang EVC (Embedded Visual C++) 4 ay naibalik na. Kaya ni Perl
ay binuo din gamit ang Mga Smart Device para sa Visual C++ 2005 o 2008.

Panloob Mga Pagbabago


· Ang panloob na representasyon ay nagbago para sa mga variable ng pagtutugma $1, $2 atbp., $`, $&,
$', ${^PREMATCH}, ${^MATCH} at ${^POSTMATCH}. Gumagamit ito ng bahagyang mas kaunting memorya, umiiwas
paghahambing ng string at mga numerong conversion habang naghahanap, at gumagamit ng 23 mas kaunting linya ng
C. Ang pagbabagong ito ay hindi dapat makaapekto sa anumang panlabas na code.

· Gumagamit na ngayon ang mga array ng NULL sa loob upang kumatawan sa mga hindi nagamit na slot, sa halip na &PL_sv_undef.
&PL_sv_undef ay hindi na itinuturing bilang isang espesyal na halaga, kaya av_store(av, 0, &PL_sv_undef)
ay magiging sanhi ng elemento 0 ng array na iyon na magkaroon ng read-only na hindi natukoy na scalar. "$array[0] =
kahit ano" ay tumikok at ang "\$array[0]" ay maghahambing ng katumbas ng "\undef".

· Ang SV ay bumalik ni HeSVKEY_force() ngayon ay wastong sumasalamin sa UTF8ness ng
pinagbabatayan ng hash key kapag hindi naka-store ang key na iyon bilang SV. [perl #79074]

· Ang ilang bihirang ginagamit na function at macro na available sa XS code ay hindi na ginagamit.
Ito ay: "utf8_to_uvuni_buf" (gamitin ang "utf8_to_uvchr_buf") sa halip),
"valid_utf8_to_uvuni" (gamitin ang "utf8_to_uvchr_buf" sa halip), "NATIVE_TO_NEED" (ginawa nito
hindi pa rin gumana nang maayos), at "ASCII_TO_NEED" (hindi ito gumana nang maayos).

Simula sa release na ito, halos hindi na kailangang tukuyin ang application code
sa pagitan ng set ng character ng platform at Latin1, kung saan ang pinakamababang 256 character ng
Nakabatay ang Unicode. Ang bagong code ay hindi dapat gumamit ng "utf8n_to_uvuni" (gamitin ang "utf8_to_uvchr_buf"
sa halip), o "uvuni_to_utf8" (gamitin ang "uvchr_to_utf8" sa halip),

· Ang Makefile shortcut ay nagta-target para sa maraming bihirang (o hindi kailanman) nagamit na pagsubok at profiling
ang mga target ay inalis, o pinagsama sa isa pang target na Makefile na gumagamit
sila. Sa partikular, wala na ang mga target na ito, kasama ang dokumentasyong nag-refer
kanila o ipinaliwanag kung paano gamitin ang mga ito:

check.third check.utf16 check.utf8 coretest minitest.prep
minitest.utf16 perl.config.dashg perl.config.dashpg
perl.config.gcov perl.gcov perl.gprof perl.gprof.config
perl.pixie perl.pixie.atom perl.pixie.config perl.pixie.irix
perl.third perl.third.config perl.valgrind.config purecovperl
pureperl quantperl test.deparse test.taintwarn test.ikatlo
test.torture test.utf16 test.utf8 test_notty.deparse
test_notty.third test_notty.valgrind test_prep.third
test_prep.valgrind torturetest ucheck ucheck.third ucheck.utf16
ucheck.valgrind utest utest.third utest.utf16 utest.valgrind

Posible pa ring patakbuhin ang mga nauugnay na utos sa pamamagitan ng "kamay" - walang pinagbabatayan
ang functionality ay tinanggal.

· Posible na ngayong pigilan ang Perl sa pagsisimula ng locale handling. Para sa pinaka-bahagi,
Hindi binibigyang pansin ni Perl ang lokal. (Tingnan ang perllocale.) Gayunpaman, hanggang ngayon, sa
startup, palagi nitong sinisimulan ang locale handling sa default ng system, kung sakali
ang programa na isinasagawa ay nagtatapos sa paggamit ng mga lokal. (Ito ang isa sa mga unang bagay a
dapat gawin ng locale-aware program, bago pa malaman ng Perl kung talagang kakailanganin ito
o hindi.) Ito ay gumagana nang maayos maliban kung ang Perl ay naka-embed sa isa pang application na
gusto ng isang lokal na hindi ang sistema ng default. Ngayon, kung ang kapaligiran variable
Ang "PERL_SKIP_LOCALE_INIT" ay nakatakda sa oras na sinimulan ang Perl, ang hakbang na ito sa pagsisimula
ay nilaktawan. Bago ito, sa mga platform ng Windows, ang tanging solusyon para dito
Ang kakulangan ay gumamit ng na-hack-up na kopya ng panloob na Perl code. Mga aplikasyon na kailangan
upang gamitin ang mas lumang Perls ay maaaring matuklasan kung ang naka-embed na Perl na ginagamit nila ay nangangailangan ng
solusyon sa pamamagitan ng pagsubok na ang simbolo ng C preprocessor na "HAS_SKIP_LOCALE_INIT" ay hindi
tinukoy. [RT #38193]

· Ang "BmRARE" at "BmPREVIOUS" ay tinanggal. Hindi sila ginamit kahit saan at hindi
bahagi ng API. Para sa mga XS module, ang mga ito ay #defined na ngayon bilang 0.

· "sv_force_normal", na kadalasang nag-croak sa mga read-only na halaga, na ginagamit upang payagan ang read-only
mga halaga na babaguhin sa oras ng pag-compile. Ito ay ginawang croak sa read-only
mga halaga anuman. Natuklasan ng pagbabagong ito ang ilang pangunahing bug.

· Ang bagong copy-on-write na mekanismo ng Perl (na ngayon ay pinagana bilang default), ay nagbibigay-daan sa anuman
"SvPOK" scalar na awtomatikong maa-upgrade sa isang copy-on-write scalar kapag kinopya. A
Ang bilang ng reference sa string buffer ay naka-imbak sa string buffer mismo.

Halimbawa:

$ perl -MDevel::Peek -e'$a="abc"; $b = $a; Dump $a; Dump $b'
SV = PV(0x260cd80) at 0x2620ad8
REFCNT = 1
FLAGS = (POK,IsCOW,pPOK)
PV = 0x2619bc0 "abc"\0
CUR = 3
LEN = 16
COW_REFCNT = 1
SV = PV(0x260ce30) at 0x2620b20
REFCNT = 1
FLAGS = (POK,IsCOW,pPOK)
PV = 0x2619bc0 "abc"\0
CUR = 3
LEN = 16
COW_REFCNT = 1

Tandaan na ang parehong mga scalar ay may parehong PV buffer at may COW_REFCNT na mas malaki kaysa
zero.

Nangangahulugan ito na ang XS code na gustong baguhin ang "SvPVX()" buffer ng isang SV ay dapat
tawagan muna ang "SvPV_force()" o katulad nito, upang matiyak ang isang wastong (at hindi nakabahaging) buffer, at upang
tawagan ang "SvSETMAGIC()" pagkatapos. Ito sa katunayan ay palaging ang kaso (halimbawa
ang mga hash key ay copy-on-write na); ang pagbabagong ito ay nagpapalaganap lamang ng pag-uugali ng COW sa a
mas malawak na pagkakaiba-iba ng mga SV.

Ang isang mahalagang pagkakaiba ay bago ang 5.18.0, ang mga nakabahaging hash-key na mga scalar ay dati
ang "SvREADONLY" na flag set; hindi na ito ang kaso.

Ang bagong gawi na ito ay maaari pa ring i-disable sa pamamagitan ng pagtakbo I-configure ang sa
-Accflags=-DPERL_NO_COW. Ang opsyon na ito ay malamang na aalisin sa Perl 5.22.

· Ang "PL_sawampersand" ay pare-pareho na ngayon. Ang switch na ibinigay ng variable na ito (sa
paganahin/huwag paganahin ang pre-match na kopya depende sa kung nakita na ang $&).
inalis at pinalitan ng copy-on-write, na nag-aalis ng ilang bug.

Ang nakaraang gawi ay maaari pa ring paganahin sa pamamagitan ng pagtakbo I-configure ang sa
-Accflags=-DPERL_SAWAMPERSAND.

· Ang mga function na "my_swap", "my_htonl" at "my_ntohl" ay tinanggal. Ito ay hindi malinaw
bakit minarkahan ang mga function na ito bilang A, bahagi ng API. Hindi sila matawagan ng XS code
direkta, dahil hindi ito maaaring umasa sa mga ito na pinagsama-sama. Hindi nakakagulat, walang code sa CPAN
tumutukoy sa kanila.

· Ang lagda ng "Perl_re_intuit_start()" regex function ay nagbago; ang function
Ang pointer na "intuit" sa istraktura ng plugin ng regex engine ay nagbago din nang naaayon. A
bagong parameter, "strbeg" ay naidagdag; ito ay may parehong kahulugan ng parehong-pinangalanan
parameter sa "Perl_regexec_flags". Dati intuit ay subukang hulaan ang simula ng
ang string mula sa naipasa na SV (kung mayroon man), at kung minsan ay nagkakamali ito (hal. sa isang
overloaded na SV).

· Ang lagda ng "Perl_regexec_flags()" regex function ay nagbago; ang function
Ang pointer na "exec" sa istraktura ng plugin ng regex engine ay nagbago din upang tumugma. Ang
Ang parameter na "minend" ay mayroon na ngayong uri ng "SSize_t" upang mas mahusay na suportahan ang mga 64-bit system.

· Ang XS code ay maaaring gumamit ng iba't ibang macro upang baguhin ang case ng isang character o code point (para sa
halimbawa "toLOWER_utf8()"). Ilan lamang sa mga ito ang naidokumento hanggang ngayon; at ngayon
dapat gamitin ang mga ito bilang kagustuhan sa pagtawag sa mga pinagbabatayan na function. Tingnan ang "Character
kaso nagbabago" sa perlapi.

· Ang code ay hindi naaayon sa mga uid at gid. Ang ilang mga lugar ay ipinapalagay na sila
maaaring ligtas na maimbak sa mga UV, ang iba sa mga IV, ang iba sa mga ints. Apat na bagong macro ang
ipinakilala: SvUID(), sv_setuid(), SvGID(), at sv_setgid()

· Ang "sv_pos_b2u_flags" ay naidagdag sa API. Ito ay katulad ng "sv_pos_b2u", ngunit
sumusuporta sa mahabang string sa 64-bit na mga platform.

· Ang "PL_exit_flags" ay maaari na ngayong gamitin ng mga perl embedder o iba pang XS code upang magkaroon ng perl na "babalaan"
o "i-abort" sa isang tangkang lumabas. [perl #52000]

· Ang pag-compile gamit ang "-Accflags=-PERL_BOOL_AS_CHAR" ay nagbibigay-daan na ngayon sa mga C99 at C++ compiler na
tularan ang aliasing ng "bool" sa "char" na ginagawa ng perl para sa mga C89 compiler. [perl
# 120314]

· Ang argumentong "sv" sa "sv_2pv_flags" sa perlapi, "sv_2iv_flags" sa perlapi,
"sv_2uv_flags" sa perlapi, at "sv_2nv_flags" sa perlapi at ang kanilang mga mas lumang wrapper
sv_2pv, sv_2iv, sv_2uv, sv_2nv, ay hindi null na ngayon. Ang pagpasa sa NULL ngayon ay mag-crash. Kailan
ang non-NULL marker ay ipinakilala nang maramihan sa 5.9.3 ang mga function ay minarkahan ng non-
NULL, ngunit dahil sa paglikha ng SV API sa 5.0 alpha 2, kung ang NULL ay naipasa, ang
Nagbalik ang mga function ng 0 o mga false-type na halaga. Ang code na sumusuporta sa "sv" argument being
non-NULL petsa sa 5.0 alpha 2 direkta, at hindi direkta sa Perl 1.0 (pre 5.0 api). Ang
kakulangan ng dokumentasyon na tinanggap ng mga function ang isang NULL na "sv" ay naitama sa 5.11.0
at sa pagitan ng 5.11.0 at 5.19.5 ang mga function ay minarkahan ng NULLOK. Bilang isang pag-optimize ang
Ang NULLOK code ay tinanggal na ngayon, at ang mga function ay naging non-NULL na minarkahan muli,
dahil ang mga pangunahing getter-type na macro ay hindi kailanman pumasa sa NULL sa mga function na ito at mag-crash
bago kailanman pumasa sa NULL.

Ang tanging paraan na maipapasa ang NULL "sv" sa sv_2*v* function ay kung direkta ang XS code
tumatawag sa sv_2*v*. Hindi ito malamang dahil gumagamit ang XS code ng mga Sv*V* na macro upang makuha ang pinagbabatayan
halaga mula sa SV. Isang posibleng sitwasyon na humahantong sa isang NULL na "sv" na ipinasa sa
sv_2*v* function, ay kung ang XS code ay tumutukoy sa sarili nitong getter type na Sv*V* na mga macro, na nagsusuri
para sa NULL bago dereferencing at pagsuri sa mga flag ng SV sa pamamagitan ng pampublikong API Sv*OK*
macros o direktang gumagamit ng pribadong API na "SvFLAGS", at kung ang "sv" ay NULL, pagkatapos ay tatawagan ang
Ang sv_2*v ay gumagana sa isang NULL litteral o nagpapasa ng "sv" na naglalaman ng isang NULL na halaga.

· Ang bagongATTRSUB ay isa nang macro

Ang pampublikong API na bagongATTRSUB ay dating isang macro sa pribadong function
Perl_newATTRSUB. Ang function na Perl_newATTRSUB ay tinanggal. newATTRSUB ay macro na ngayon sa
ibang internal function.

· Mga pagbabago sa mga babala na itinaas ng "utf8n_to_uvchr()"

Ang function na ito sa ibabang antas ay nagde-decode ng unang character ng isang UTF-8 string sa isang code
punto. Ito ay naa-access sa "XS" level code, ngunit hindi ito hinihikayat na gamitin ito
direkta. Mayroong mas mataas na antas ng mga pag-andar na tumatawag dito na dapat gamitin
sa halip, gaya ng "utf8_to_uvchr_buf" sa perlapi. Para sa pagkakumpleto bagaman, ito
idokumento ang ilang pagbabago dito. Ngayon, ang mga pagsusuri para sa mga malformation ay ginagawa bago ang anumang mga pagsubok
para sa iba pang mga potensyal na isyu. Ang isa sa mga isyung iyon ay nagsasangkot ng mga puntos ng code na napakalaki na
sila ay hindi kailanman lumitaw sa anumang opisyal na pamantayan (ang kasalukuyang pamantayan ay na-scale
ibalik ang pinakamataas na katanggap-tanggap na code point mula sa mga naunang bersyon). Posible (bagaman
hindi ginawa sa CPAN) upang balaan at/o pagbawalan ang mga punto ng code na ito, habang tumatanggap ng mas maliit
mga puntos ng code na nasa itaas pa rin ng legal na Unicode maximum. Ang mensahe ng babala para sa
kasama na dito ang code point kung representable sa makina. Dati ito
palaging ipinapakita ang mga raw byte, na ginagawa pa rin nito para sa hindi kinakatawan na code
puntos.

· Mga pagbabago sa Regexp engine na nakakaapekto sa pluggable na interface ng regex engine

Maraming mga flag na dating na-expose sa pamamagitan ng regexp.h at ginamit upang i-populate ang mga extflag
ang miyembro ng struct regexp ay tinanggal. Ang mga patlang na ito ay teknikal na pribado sa
Perl's sariling regexp engine at hindi dapat na-expose doon sa unang lugar.

Ang mga apektadong bandila ay:

RXf_NOSCAN
RXf_CANY_SEEN
RXf_GPOS_SEEN
RXf_GPOS_FLOAT
RXf_ANCH_BOL
RXf_ANCH_MBOL
RXf_ANCH_SBOL
RXf_ANCH_GPOS

Pati na rin ang mga sumusunod na flag mask:

RXf_ANCH_SINGLE
RXf_ANCH

Ang lahat ay pinalitan ng pangalan sa PREGf_ equivalents at inilipat sa regcomp.h.

Ang pag-uugali na dati ay nakamit sa pamamagitan ng pagtatakda ng isa o higit pa sa mga RXf_ANCH_ na mga flag (sa pamamagitan ng
ang RXf_ANCH mask) ay napalitan na ngayon ng isang *single* flag bit sa mga extflag:

RXf_IS_ANCHORED

Ang mga pluggable regex engine na dating ginamit upang itakda ang mga flag na ito ay dapat na ngayong magtakda nito
bandila MAG-ISA.

· Ang Perl core ngayon ay patuloy na gumagamit ng "av_tindex()" ("ang nangungunang index ng isang array") bilang isang
mas malinaw na pinangalanang kasingkahulugan para sa "av_len()".

· Ang nakakubling variable ng interpreter na "PL_timesbuf" ay inaasahang maaalis nang maaga sa
5.21.x na serye ng pagpapaunlad, upang hindi ito ibigay ng Perl 5.22.0 sa mga may-akda ng XS.
Habang umiiral pa rin ang variable sa 5.20.0, umaasa kami na ang paunang babala na ito ng
ang deprecation ay makakatulong sa sinumang gumagamit ng variable na iyon.

Napiling Kulisap Pag-aayos


regular expression
· Inayos ang isang maliit na bilang ng mga konstruksyon ng regexp na maaaring hindi tumugma o mag-crash
perl kapag ang string na itinugma laban ay inilaan sa itaas ng 2GB na linya sa 32-bit
mga sistema. [RT #118175]

· Iba't ibang memory leaks na kinasasangkutan ng pag-parse ng "(?[...])" na regular na expression
naayos na ang konstruksyon.

· Pinapayagan na ngayon ng "(?[...])" ang interpolation ng mga precompiled pattern na binubuo ng "(?[...])"
na may naka-bracket na mga klase ng character sa loob ("$pat = qr/(?[ [a] ])/; /(?[ $pat ])/").
Dati, malito ng mga bracket ang regular na expression parser.

· Maaaring lumabas ang mensahe ng babala na "Hindi inaasahang Quantifier sa zero-length na expression."
dalawang beses na nagsisimula sa Perl v5.10 para sa isang regular na expression na naglalaman din ng mga alternatibo
(hal., "a|b") na nagpapalitaw sa pag-optimize ng pagsubok.

· Ang Perl v5.18 ay hindi sinasadyang nagpakilala ng isang bug kung saan nagsasama-sama ng pataas at pababa-
ang mga na-gradong UTF-8 na mga string sa isang regex ay maaaring magresulta sa maling nabuong UTF-8 sa pattern:
partikular kung ang isang na-downgrade na character sa hanay na "\x80..\xff" ay sumunod sa isang UTF-8
string, hal

utf8::upgrade( my $u = "\x{e5}");
utf8::downgrade(my $d = "\x{e5}");
/$u$d/

[RT #118297]

· Sa mga regular na expression na naglalaman ng maramihang mga bloke ng code, ang mga halaga ng $1, $2, atbp.,
na itinakda ng mga nested na regular na expression na tawag ay tumagas mula sa isang bloke patungo sa susunod. Ngayon
ang mga variable na ito ay palaging tumutukoy sa panlabas na regular na expression sa simula ng isang
naka-embed na bloke [perl #117917].

· Nasira ang "/$qr/p" sa Perl 5.18.0; ang "/p" na bandila ay hindi pinansin. Naayos na ito.
[perl #118213]

· Simula sa Perl 5.18.0, ang isang construct tulad ng "/[#](?{})/x" ay magkakaroon ng "#" nang hindi tama
binibigyang kahulugan bilang komento. Ang code block ay lalaktawan, hindi ma-parse. Ito ay naging
naitama.

· Simula sa Perl 5.001, ang isang regular na expression tulad ng "/[#$a]/x" o "/[#]$a/x" ay magkakaroon
ang "#" nito ay hindi wastong na-interpret bilang isang komento, kaya ang variable ay hindi mag-interpolate.
Ito ay naitama. [perl #45667]

· Hindi sinasadyang ginawa ng Perl 5.18.0 na mali ang mga dereference na regular na expression ("${ qr// }") bilang
mga boolean. Naayos na ito.

· Ang paggamit ng "\G" sa mga regular na expression, kung saan wala ito sa simula ng pattern, ay
ngayon ay bahagyang hindi gaanong buggy (bagaman ito ay medyo may problema).

· Kung saan kasama sa isang regular na expression ang mga bloke ng code ("/(?{...})/"), at kung saan ginagamit ang
ang patuloy na overloading ay nag-trigger ng muling pagsasama-sama ng block ng code, ang pangalawa
hindi nakita ng compilation ang panlabas na leksikal na saklaw nito. Ito ay isang regression sa Perl 5.18.0.

· Ang posisyon ng string na itinakda ng "pos" ay maaaring maglipat kung binago ng string ang representasyon
panloob sa o mula sa utf8. Ito ay maaaring mangyari, hal, sa mga pagtukoy sa mga bagay na may
overloading ng string.

· Pagkuha ng mga sanggunian sa mga return value ng dalawang "pos" na tawag na may parehong argumento, at
pagkatapos ay magtalaga ng reference sa isa at "undef" sa isa, ay maaaring magresulta sa assertion
mga pagkabigo o pagtagas ng memorya.

· Ang mga elemento ng @- at @+ ay nag-a-update na ngayon nang tama kapag ang mga ito ay tumutukoy sa mga hindi umiiral na pagkuha.
Dati, maaaring tumukoy ang isang reference na elemento ("$ref = \$-[1]") sa maling tugma
pagkatapos ng mga kasunod na laban.

· Ang code na nag-parse ng regex backrefs (o hindi maliwanag na backref/octals) gaya ng \123 ay gumawa ng
simple atoi(), na maaaring magpaikot sa mga negatibong halaga sa mahabang digit na mga string at
maging sanhi ng mga pagkakamali sa segmentation. Naayos na ito ngayon. [perl #119505]

· Ang pagtatalaga ng isa pang typeglob sa "*^R" ay hindi na gumagawa ng regular na expression engine
pag-crash.

· Ang "\N" na regular na expression ay escape, kapag ginamit nang walang curly braces (sa ibig sabihin
"[^\n]"), ay binabalewala ang sumusunod na "*" kung sinusundan ng whitespace sa ilalim ng /x. Ito ay nagkaroon ng
naging ganito mula noong "\N" na nangangahulugang "[^\n]" ay ipinakilala noong 5.12.0.

· Gumagana na ngayon ang "s///", "tr///" at "y///" kapag malawak na character ang ginamit bilang delimiter.
[perl #120463]

· Ang ilang mga kaso ng hindi natatapos (?...) na mga pagkakasunod-sunod sa mga regular na expression (hal., "/(?
ay naayos upang makagawa ng wastong mensahe ng error sa halip na "panic: memory wrap".
Ang ibang mga kaso (hal., "/(?(/") ay hindi pa naaayos.

· Kapag ang isang reference sa isang reference sa isang overloaded object ay ibinalik mula sa isang regular
expression na "(??{...})" code block, maaaring maganap ang isang hindi wastong implicit dereference
kung ang panloob na sanggunian ay naibalik ng isang bloke ng code dati.

· Ang isang nakatali na variable na ibinalik mula sa "(??{...})" ay nakikita ang mga panloob na halaga ng mga variable ng pagtutugma
(ibig sabihin, ang $1 atbp. mula sa anumang mga tugma sa loob ng block) sa paraan ng FETCH nito. Ito ay
hindi ang kaso kung ang isang reference sa isang overloaded na bagay ay ang huling bagay na itinalaga sa
nakatali na variable. Sa halip, ang mga variable ng pagtutugma ay tumutukoy sa panlabas na pattern sa panahon ng
FETCH tawag.

· Ayusin ang hindi inaasahang bahid sa pamamagitan ng regexp gamit ang locale. Noong nakaraan, sa ilalim ng ilang mga kundisyon,
ang paggamit ng mga klase ng character ay maaaring magdulot ng pagdumi kung hindi naman dapat. Ilang karakter
ang mga klase ay umaasa sa lokal, ngunit bago ang patch na ito, kung minsan ay nangyayari ang pagdumi
kahit para sa mga klase ng character na hindi nakadepende sa locale. [perl #120675]

· Sa ilalim ng ilang mga kundisyon, ang Perl ay magtapon ng isang error kung sa isang pagtingin sa likod ng assertion sa a
regexp, ang assertion ay tumutukoy sa isang pinangalanang subpattern, na nagrereklamo sa hitsura sa likod ay
variable kapag hindi. Naayos na ito. [perl #120600], [perl #120618]. Ang
kasalukuyang pag-aayos ay maaaring mapabuti sa hinaharap.

· Hindi available ang $^R sa labas ng regular na expression na nagpasimula nito. [perl
# 121070]

· Isang malaking hanay ng mga pag-aayos at refactoring para sa re_intuit_start() ay pinagsama, ang mga highlight
ay:

· Inayos ang gulat kapag kino-compile ang regular na expression na "/\x{100}[xy]\x{100}{2}/".

· Inayos ang isang pagbabalik ng pagganap kapag nagsasagawa ng isang pandaigdigang pagtutugma ng pattern laban sa a
UTF-8 string. [perl #120692]

· Inayos ang isa pang isyu sa pagganap kung saan tumutugma sa isang regular na expression tulad ng
Ang "/ab.{1,2}x/" laban sa isang mahabang string ng UTF-8 ay hindi kinakailangang magkalkula ng byte
offset para sa malaking bahagi ng string. [perl #120692]

· Inayos ang isang error sa pag-align kapag nag-compile ng mga regular na expression kapag binuo gamit ang GCC sa HP-
UX 64-bit.

· Sa 64-bit na mga platform ay maaari na ngayong itakda ang "pos" sa halagang mas mataas sa 2**31-1. [perl
# 72766]

Perl 5 Debugger at -d
· Naayos na ang "man" command ng debugger. Nasira ito sa v5.18.0 release. Ang
Ang utos na "man" ay naka-alyas sa mga pangalang "doc" at "perldoc" - gumagana na muli ang lahat.

· Tamang nakikita na ngayon ang @_ sa debugger, nag-aayos ng regression na ipinakilala sa
debugger ng v5.18.0. [RT #118169]

· Sa ilalim ng copy-on-write build (ang default noong 5.20.0) ang "${'_<-e'}[0]" ay hindi na nakukuha
sira-sira. Ito ang unang linya ng input na na-save para sa paggamit ng debugger para sa mga one-liner
[perl #118627].

· Sa mga hindi naka-thread na build, itinatakda ang "${"_
nagiging sanhi ng "__FILE__" at ilang mensahe ng error upang makagawa ng isang corrupt na string, at hindi na
pinipigilan ang mga direktiba ng "#line" sa mga string eval sa pagbibigay ng mga linya ng pinagmulan sa
debugger. Hindi naapektuhan ang mga thread na build.

· Simula sa Perl 5.12, ang mga numero ng linya ay na-off ng isa kung ang -d ginamit ang switch sa
#! linya. Ngayon sila ay tama.

· Hindi na pinipigilan ng "*DB::DB = sub {} kung 0" ang debugging mode ng Perl sa paghahanap ng "DB::DB"
ipinahayag pagkatapos noon.

· Ang "%{'_<...'}" na mga hash ay nagtatakda na ngayon ng mga breakpoint sa katumbas na "@{'_<...'}" sa halip na
alinmang array @DB::dbline ang naka-alyas. [perl #119799]

· Tumawag sa set-magic kapag nagtatakda ng $DB::sub. [perl #121255]

· Iginagalang na ngayon ng "n" na utos ng debugger ang mga subroutine ng halaga at mga hakbang sa ibabaw nito [perl
#118839].

Leksikal Mga subroutine
· Ang mga lexical constants ("my sub a() { 42 }") ay hindi na nag-crash kapag naka-inline.

· Ang mga prototype ng parameter na naka-attach sa mga lexical na subroutine ay iginagalang na ngayon kapag nag-compile
mga sub na tawag na walang panaklong. Noong nakaraan, ang mga prototype ay pinarangalan lamang para sa
tawag sa panaklong. [RT #116735]

· Mga error sa syntax sa mga lexical na subroutine kasama ng mga tawag sa parehong subroutine
hindi na nagiging sanhi ng mga pag-crash sa oras ng pag-compile.

· Ang mga malalim na babala sa recursion ay hindi na nag-crash ng mga lexical na subroutine. [RT #118521]

· Ang dtrace sub-entry probe ay gumagana na ngayon sa mga lexical subs, sa halip na mag-crash [perl
#118305].

· Ang pag-undefine ng isang inlinable lexical subroutine ("my sub foo() { 42 } undef &foo") ay
magreresulta sa isang pag-crash kung ang mga babala ay naka-on.

· Ang isang hindi natukoy na lexical sub na ginamit bilang isang minanang pamamaraan ay hindi na nag-crash.

· Ang pagkakaroon ng lexical sub na pinangalanang "CORE" ay hindi na humihinto sa CORE:: prefix mula sa
nagtatrabaho.

Lahat Iba
· Ang OP allocation code ay nagbabalik na ngayon ng wastong nakahanay na memorya sa lahat ng kaso para sa "struct
pmop". Dati maaari itong ibalik ang memorya na nakahanay lamang sa isang 4-byte na hangganan, na
hindi tama para sa isang build ng ithread na may 64 bit IV sa ilang 32 bit na platform. Kapansin-pansin,
naging sanhi ito ng ganap na pagbagsak ng build sa sparc GNU/Linux. [RT #118055]

· Ang pagsusuri ng malalaking hash sa kontekstong scalar ay mas mabilis na ngayon, dahil ang bilang ng mga ginamit
Ang mga chain sa hash ay naka-cache na ngayon para sa mas malalaking hash. Ang mas maliliit na hash ay patuloy na hindi
itabi ito at kalkulahin kung kinakailangan, dahil nakakatipid ito ng isang IV. Iyon ay magiging 1 IV
overhead para sa bawat bagay na binuo mula sa isang hash. [RT #114576]

· Ang Perl v5.16 ay hindi sinasadyang nagpakilala ng isang bug kung saan tumatawag sa mga XSUB na hindi nakikita
sa oras ng pag-compile ay itinuturing bilang mga lvalues ​​at maaaring italaga sa, kahit na kapag ang
subroutine ay hindi isang lvalue sub. Naayos na ito. [RT #117947]

· Sa Perl v5.18.0 dualvars na may walang laman na string para sa string na bahagi ngunit isang non-zero
numero para sa bahagi ng numero na nagsisimulang ituring bilang totoo. Sa mga nakaraang bersyon sila
ay itinuring na mali, ang representasyon ng string ay inuuna. Ang matanda
ang pag-uugali ay naibalik. [RT #118159]

· Mula noong Perl v5.12, inlining ng mga constants na nag-o-override sa mga built-in na keyword ng pareho
binanggit ng pangalan ang "use subs", na nagdulot ng mga kasunod na pagbanggit ng constant na gagamitin
ang built-in na keyword sa halip. Naayos na ito.

· Ang babalang ginawa ng "-l $handle" ay nalalapat na ngayon sa mga ref at glob ng IO, hindi lang sa
glob ref. Ang babalang iyon ay malinis na rin sa UTF8. [RT #117595]

· Ang "delete local $ENV{nonexistent_env_var}" ay hindi na naglalabas ng memorya.

· "pag-uri-uriin" at "kailangan" na sinusundan ng isang keyword na may prefix na "CORE::" ngayon ay ituring ito bilang isang
keyword, at hindi bilang subroutine o pangalan ng module. [RT #24482]

· Sa pamamagitan ng ilang mga palaisipan, posibleng maging sanhi ng paglaya ng kasalukuyang pakete.
Ang ilang partikular na operator ("bless", "reset", "open", "eval") ay hindi makayanan at mag-crash.
Sila ay ginawang mas matatag. [RT #117941]

· Ang pag-aliase ng mga filehandles sa pamamagitan ng glob-to-glob na pagtatalaga ay hindi mag-a-update ng panloob na pamamaraan
mga cache nang maayos kung umiral ang isang pakete ng parehong pangalan bilang filehandle, na nagreresulta sa
Ang filehandle method ay tumatawag sa package sa halip. Naayos na ito.

· Ang "./Configure -de -Dusevendorprefix" ay hindi naging default. [RT #64126]

· Ang babala na "Malamang na hindi maabot ang pahayag" ay nakalista sa perldiag bilang isang
"exec"-category na babala, ngunit pinagana at hindi pinagana ng kategoryang "syntax." Naka-on
sa kabilang banda, kontrolado ng kategoryang "exec" ang pagiging fatal nito. Ito ay ganap na ngayon
pinangangasiwaan ng kategoryang "exec".

· Ang babala na "Ang listahan ng kapalit ay mas mahaba sa listahan ng paghahanap" para sa "tr///" at "y///" hindi
mas matagal na nangyayari sa pagkakaroon ng "/c" na watawat. [RT #118047]

· Ang Stringification ng mga NV ay hindi naka-cache upang ang lexical na lokal na kontrol
stringification ng decimal point. [perl #108378] [perl #115800]

· Nagkaroon ng ilang mga pag-aayos na nauugnay sa pangangasiwa ni Perl sa mga lokal. perl #38193 noon
inilarawan sa itaas sa "Mga Panloob na Pagbabago". Naayos din ang #118197, kung saan ang radix
(decimal point) character ay kailangang isang ASCII character (na hindi gumagana para sa ilan
mga wikang hindi Kanluranin); at #115808, kung saan ibinalik ang "POSIX::setlocale()" sa pagkabigo
isang "undef" na hindi nagbabala tungkol sa hindi pagtukoy kahit na ang mga babalang iyon ay
pinagana.

· Pag-compile ng isang "split" na operator na ang ikatlong argumento ay pinangalanang pare-parehong nagsusuri sa 0
hindi na nagiging sanhi ng pagbabago ng halaga ng pare-pareho.

· Ang isang pinangalanang constant na ginamit bilang pangalawang argumento sa "index" ay hindi na napipilitan sa a
string kung ito ay isang sanggunian, regular na expression, dualvar, atbp.

· Isang pinangalanang patuloy na pagsusuri sa hindi natukoy na halaga na ginamit bilang pangalawang argumento sa
Ang "index" ay hindi na gumagawa ng "uninitialized" na mga babala sa oras ng pag-compile. Gagawin pa rin nito
gumawa ng mga ito sa oras ng pagtakbo.

· Kapag ang isang scalar ay ibinalik mula sa isang subroutine sa @INC, ang tinutukoy na scalar ay
mahiwagang na-convert sa isang bagay na IO, posibleng magresulta sa mga error na "Kakaibang kopya" kung
ang scalar na iyon ay patuloy na ginagamit sa ibang lugar. Gumagamit na ngayon si Perl ng panloob na kopya ng
scalar sa halip.

· Ang ilang partikular na paggamit ng operator na "sort" ay na-optimize upang baguhin ang isang array sa lugar, tulad ng
"@a = sort @a". Sa panahon ng pag-uuri, ang array ay ginawang read-only. Kung isang sort block
dapat mangyari na mamatay, pagkatapos ang array ay nanatiling read-only kahit na sa labas ng "sort". Ito
ay naayos na.

· Ang $a at $b sa loob ng sort block ay ina-alyas sa aktwal na mga argumento sa "pag-uuri", kaya sila
maaaring mabago sa pamamagitan ng dalawang variable na iyon. Ito ay hindi palaging gumagana, hal, para sa
lvalue subs at $#ary, at marahil marami pang ibang operator. Gumagana ito ngayon.

· Ang mga argumento sa "pagbukud-bukurin" ay nasa listahan na ngayon ng konteksto. Kung ang "uri" mismo ay tinawag
sa walang bisa o scalar na konteksto, kung gayon ilan, ngunit hindi lahat, ng mga argumento ay dating walang bisa
o kontekstong scalar.

· Ang mga subroutine na prototype na may mga Unicode na character sa itaas ng U+00FF ay nasisira habang
pagsasara ng cloning. Mangyayari ito sa mga subroutine na nagsasara sa mga lexical na variable
idineklara sa labas, at may lexical subs.

· Tinatrato na ngayon ng "UNIVERSAL::can" ang unang argumento nito sa parehong paraan na ginagawa ng method calls:
Ang mga typeglob at glob na reference na may mga walang laman na IO slot ay itinuturing bilang mga handle, at
Ang mga string ay itinuturing bilang filehandle, sa halip na mga pakete, kung isang handle na may ganoong pangalan
umiiral [perl #113932].

· Mga tawag sa pamamaraan sa mga typeglob (hal., "*ARGV->getline") na ginagamit upang i-stringify ang typeglob at
pagkatapos ay hanapin ito muli. Kasama ng mga pagbabago sa Perl 5.18.0, pinayagan nito ang "*foo->bar"
upang tawagan ang mga pamamaraan sa package na "foo" (tulad ng "foo->bar"). Sa ilang mga kaso maaari itong maging sanhi
ang paraan na tatawagin sa maling hawakan. Ngayon ang isang typeglob na argumento ay itinuturing bilang a
handle (tulad ng "(\*foo)->bar"), o, kung ang IO slot nito ay walang laman, isang error ang itataas.

· Pagtatalaga ng vstring sa isang nakatali na variable o sa isang subroutine na argumento na may alias sa a
gumagana na ngayon ang nonexistent hash o array element, nang hindi na-flatte ang vstring sa a
regular na string.

· Hindi gumana nang maayos ang "pos", "tie", "tied" at "untie" sa mga subroutine na argumento na may alias
sa hindi umiiral na hash at array elements [perl #77814, #27010].

· Ang "=>" fat arrow operator ay maaari na ngayong sumipi ng mga built-in na keyword kahit na ito ay nangyayari sa
susunod na linya, ginagawa itong pare-pareho sa kung paano nito tinatrato ang iba pang mga bareword.

· Nagsimulang magdulot ng mga pag-crash sa Perl 5.18.0 ang autovivifying ng subroutine stub sa pamamagitan ng "\&$glob"
kung ang $glob ay isang kopya lamang ng isang tunay na glob, ibig sabihin, isang scalar na nagkaroon ng glob
nakatalaga dito. Naayos na ito. [perl #119051]

· Ang Perl ay dating naglalabas ng detalye ng pagpapatupad pagdating sa pagtukoy sa pagbabalik
mga halaga ng ilang mga operator. "for ($a+$b) { warn \$_; warn \$_ }" na ginagamit upang ipakita ang dalawa
iba't ibang mga address ng memorya, dahil kinokopya ng operator na "\" ang variable. Sa ilalim
sinulid na mga build, mangyayari din ito para sa mga constants ("para(1) { ... }"). Ito ay naging
nakapirming. [perl #21979, #78194, #89188, #109746, #114838, #115388]

· Ang range operator na ".." ay nagbabalik ng parehong nababagong scalar sa bawat tawag,
maliban kung ito ang tanging bagay sa isang "foreach" loop header. Nangangahulugan ito na nagbabago sa
ang mga halaga sa loob ng listahan na ibinalik ay makikita sa susunod na pagkakataon na ang operator ay
pinaandar. [perl #3105]

· Ang patuloy na pagtitiklop at subroutine inlining ay hindi na nagdudulot ng mga operasyong iyon
karaniwang nagbabalik ng mga bagong nababagong scalar upang ibalik ang mga read-only na halaga sa halip.

· Ang mga pagsasara ng form na "sub () { $some_variable }" ay hindi na naka-inline, na nagiging sanhi ng
mga pagbabago sa variable na hindi papansinin ng mga tumatawag ng subroutine. [perl #79908]

· Ang mga return value ng ilang operator gaya ng "ref" ay minsang ibabahagi sa pagitan
recursive na mga tawag sa parehong subroutine, na nagiging sanhi ng panloob na tawag na baguhin ang halaga
ibinalik ng "ref" sa panlabas na tawag. Naayos na ito.

· Ang "__PACKAGE__" at mga constant na nagbabalik ng pangalan ng package o hash key ay pare-pareho na ngayon
Basahin lamang. Sa iba't ibang mga nakaraang release ng Perl, naging nababago ang mga ito sa ilalim ng tiyak
pangyayari.

· Ang pagpapagana ng mga babala na "nagamit nang isang beses" ay hindi na nagiging sanhi ng mga pag-crash sa mga nakatagong circularity na ginawa
sa oras ng pag-compile ("*Foo::Bar::Foo:: = *Foo::").

· Ang mga undef constant na ginagamit sa mga hash key ("use constant u => undef; $h{+u}") ay hindi na
gumawa ng mga "uninitialized" na babala sa oras ng pag-compile.

· Ang pagbabago ng target ng pagpapalit sa loob ng pagpapalit ng pagpapalit ay hindi na nagiging sanhi
nag-crash.

· Ang unang pahayag sa loob ng string eval na ginamit upang gamitin ang maling setting ng pragma
minsan sa patuloy na pagtitiklop. Ang "eval 'uc chr 0xe0'" ay random na pipili sa pagitan
Unicode, byte, at locale semantics. Naayos na ito.

· Ang pangangasiwa ng mga return value ng mga filter ng @INC (mga subroutine na ibinalik ng mga subroutine sa
@INC) ay naayos sa iba't ibang paraan. Ang mga dating nakatali na variable ay mali ang pagkakahawak, at
ang pagtatakda ng $_ sa isang reference o typeglob ay maaaring magresulta sa mga pag-crash.

· Ang function na "SvPVbyte" XS ay naayos upang gumana sa mga nakatali na scalar na bumabalik
isang bagay maliban sa isang string. Dati itong nagbabalik ng utf8 sa mga kaso kung saan ang "SvPV"
ay.

· Hindi sinasadyang ginawa ng Perl 5.18.0 ang "--" at "++" na pag-crash sa na-dereference na regular
expression, at itinigil ang "++" sa pag-flatte ng mga vstring.

· Ang "bless" ay hindi na namamatay na may "Can't bless non-reference value" kung ang unang argumento nito ay
isang nakatali na sanggunian.

· "i-reset" na may argumento ay hindi na lumalaktaw sa copy-on-write na mga scalar, regular na expression,
typeglob na mga kopya, at vstrings. Gayundin, kapag nakatagpo ng mga iyon o read-only na halaga, ito
hindi na nilalaktawan ang anumang array o hash na may parehong pangalan.

· Ang "reset" na may argumento ay lumalaktaw na ngayon sa mga scalar na naka-alyas sa typeglobs ("para sa $z (*foo) {
i-reset ang "z" }"). Dati ay masisira nito ang memorya o mag-crash.

· Ang "ucfirst" at "lcfirst" ay hindi nirerespeto ang bytes pragma. Ito ay isang regression
mula sa Perl 5.12. [perl #117355]

· Ang mga pagbabago sa "UNIVERSAL::DESTROY" ay ina-update na ngayon ang DESTROY cache sa lahat ng klase, sa halip na
na nagiging sanhi ng mga klase na may mga bagay na nawasak upang magpatuloy sa paggamit ng lumang sub.
Ito ay isang regression sa Perl 5.18. [perl #114864]

· Lahat ng kilalang false-positive na paglitaw ng babala sa paghinto sa paggamit na "Walang silbi na paggamit ng '\';
ay hindi nakatakas sa metacharacter na '%c'", idinagdag sa Perl 5.18.0, ay tinanggal. [perl
# 119101]

· Ang halaga ng $^E ay nai-save na ngayon sa mga humahawak ng signal sa Windows. [perl #85104]

· Ang isang lexical filehandle (tulad ng sa "open my $fh...") ay karaniwang binibigyan ng pangalan batay sa
kasalukuyang package at ang pangalan ng variable, hal. "pangunahing::$fh". Sa ilalim ng recursion, ang
Nawawala ng filehandle ang "$fh" na bahagi ng pangalan. Naayos na ito.

· Ang mga hindi nasimulang halaga na ibinalik ng mga XSUB ay hindi na exempt sa hindi nasimulan
mga babala. [perl #118693]

· Ang "elsif ("")" ay hindi na gumagawa ng isang babala tungkol sa walang bisa na konteksto. [perl
# 118753]

· Ang pagpasa ng "undef" sa isang subroutine ngayon ay nagiging sanhi ng @_ na maglaman ng parehong read-only na hindi natukoy
scalar na nagbabalik ang "undef". Higit pa rito, ang "umiiral na $_[0]" ay magbabalik na ngayon ng true kung
"undef" ang unang argumento. [perl #7508, #109726]

· Ang pagpasa ng isang hindi umiiral na elemento ng array sa isang subroutine ay hindi kadalasang nagbibigay-buhay dito
maliban kung binago ng subroutine ang argumento nito. Hindi ito gumana nang tama sa
negatibong mga indeks at may mga hindi umiiral na elemento sa loob ng array. Ang elemento ay
mabuhay kaagad. Ang naantalang vivification ay pinalawig upang gumana sa
mga. [perl #118691]

· Pagtatalaga ng mga reference o glob sa scalar na ibinalik ng $#foo pagkatapos magkaroon ng @foo array
ang napalaya ay hindi na nagiging sanhi ng mga pagkabigo sa paninindigan sa mga build ng pag-debug at pag-leak ng memory
mga regular na build.

· Sa 64-bit na mga platform, ang malalaking hanay tulad ng 1..1000000000000 ay hindi na bumabagsak, ngunit kumakain na
lahat ng iyong memorya sa halip. [perl #119161]

· Inilalagay na ngayon ng "__DATA__" ang hawakan ng "DATA" sa tamang pakete, kahit na ang kasalukuyang
Ang package ay pinalitan ng pangalan sa pamamagitan ng glob assignment.

· Kapag ang "mamatay", "huling", "susunod", "redo", "goto" at "exit" ay inalis ang saklaw, posible
para sa "DESTROY" na paulit-ulit na tumawag sa isang subroutine o format na kasalukuyang ginagawa
lumabas. Sa kasong iyon, kung minsan ang mga lexical na variable sa loob ng sub ay magsisimula
pagkakaroon ng mga halaga mula sa panlabas na tawag, sa halip na hindi natukoy ayon sa nararapat. Ito
ay naayos na. [perl #119311]

· Ang ${^MPEN} ay hindi na itinuturing bilang kasingkahulugan ng ${^MATCH}.

· Mas mahirap na ngayon si Perl na ibalik ang tamang numero ng linya sa "(tumatawag)[2]".
[perl #115768]

· Ang mga numero ng linya sa loob ng mga multiline na tulad ng quote na operator ay naiulat na nang tama. [perl
# 3643]

· Ang mga direktiba ng "#line" sa loob ng code na naka-embed sa mga operator na parang quote ay iginagalang na ngayon.

· Ang mga numero ng linya ay tama na ngayon sa loob ng pangalawang here-doc kapag dalawang here-doc marker
mangyari sa parehong linya.

· Ang isang pag-optimize sa Perl 5.18 ay gumawa ng mga maling pagpapalagay na nagdudulot ng masamang pakikipag-ugnayan sa
ang Devel::CallParser CPAN module. Kung ang module ay na-load pagkatapos lexical variable
idineklara sa magkahiwalay na mga pahayag kasunod ng isang "aking(...)" na listahan ay maaaring mabigong ma-clear
paglabas ng saklaw.

· Pinapayagan na ng mga tawag na &xsub at "goto &xsub" ang tinatawag na subroutine na i-autovivify ang mga elemento ng
@_.

· Hindi na nag-crash ang &xsub at "goto &xsub" kung ang *_ ay hindi natukoy at walang ARRAY entry
(ibig sabihin, wala ang @_).

· Gumagana na ngayon ang &xsub at "goto &xsub" sa nakatali na @_.

· Ang mga overlong identifier ay hindi na nagiging sanhi ng buffer overflow (at isang crash). Nagsimula sila
ginagawa ito sa Perl 5.18.

· Ang babala na "Scalar value @hash{foo} na mas mahusay na isinulat bilang $hash{foo}" ngayon ay gumagawa ng malayo
mas kaunting mga maling positibo. Sa partikular, ang @hash{+function_returning_a_list} at @hash{ qw
"foo bar baz" } hindi na nagbabala. Ang parehong naaangkop sa mga hiwa ng array. [perl #28380,
# 114024]

· "$! = EINVAL; waitpid(0, WNOHANG);" hindi na napupunta sa isang panloob na walang katapusan na loop.
[perl #85228]

· Ang isang posibleng segmentation fault sa filehandle duplication ay naayos na.

· Ang isang subroutine sa @INC ay maaaring magbalik ng reference sa isang scalar na naglalaman ng inisyal
nilalaman ng file. Gayunpaman, ang scalar na iyon ay napalaya nang wala sa panahon kung hindi isinangguni
sa ibang lugar, na nagbibigay ng mga random na resulta.

· Ang "huling" ay hindi na nagbabalik ng mga halaga na ang parehong pahayag ay naipon sa ngayon, pag-aayos
bukod sa iba pang mga bagay, ang matagal nang bug na "push @a, last" ay susubukang ibalik
ang @a, pagkopya nito tulad ng isang scalar sa proseso at nagreresulta sa error, "Kakaiba
kopya ng ARRAY sa huli." [perl #3112]

· Sa ilang mga kaso, ang pagsasara ng mga hawakan ng file ay binuksan sa pipe papunta o mula sa isang proseso, na nagkaroon
na-duplicate sa isang karaniwang hawakan, tatawagan ang panloob na waitpid wrapper ng perl
na may pid na zero. Sa pag-aayos para sa [perl #85228] ang zero pid na ito ay naipasa sa
"waitpid", posibleng humarang sa proseso. Ang paghihintay na ito para sa prosesong zero ay hindi na
nangyayari. [perl #119893]

· "select" na ginagamit upang huwag pansinin ang magic sa ikaapat na (timeout) argument, na humahantong sa mga epekto
gaya ng "piliin" na pagharang nang walang katiyakan kaysa sa inaasahang oras ng pagtulog. Ito ay
ngayon ay naayos na. [perl #120102]

· Ang pangalan ng klase sa "para sa aking klase na $foo" ay na-parse na ngayon nang tama. Sa kaso ng
pangalawang character ng pangalan ng klase na sinusundan ng isang digit (eg 'a1b') na dati
bigyan ang error na "Nawawala ang $ sa loop variable". [perl #120112]

· Hindi sinasadyang hindi pinayagan ng Perl 5.18.0 ang "-bareword" sa ilalim ng "gamitin nang mahigpit" at "gamitin ang integer".
Naayos na ito. [perl #120288]

· "-a" sa simula ng isang linya (o isang gitling na may anumang solong titik na hindi isang filetest
operator) ay hindi na gumagawa ng maling 'Paggamit ng "-a" na walang panaklong ay
hindi maliwanag na babala. [perl #120288]

· Ang konteksto ng Lvalue ay maayos na ngayong pinalaganap sa mga hubad na bloke at "kung" at "iba pa" na mga bloke
sa mga subroutine ng halaga. Dati, ang mga array at hash ay minsan ay mali
na-flatten kapag ibinalik sa konteksto ng listahan ng halaga, o maaaring mangyari ang mga error na "Kakaibang kopya."
[perl #119797]

· Ang konteksto ng Lvalue ay pinalaganap na ngayon sa mga sangay ng "||" at "&&" (at kanilang
alpabetikong katumbas, "o" at "at"). Ang ibig sabihin nito ay "foreach (pos $x || pos $y)
{...}" ngayon ay nagpapahintulot sa "pos" na mabago sa pamamagitan ng $_.

· "stat" at "readline" tandaan ang huling ginamit na handle; ang dating para sa espesyal na "_"
filehandle, ang huli para sa "${^LAST_FH}". "eval "*foo kung 0"" kung saan si *foo ang huli
Ang handle na ipinasa sa "stat" o "readline" ay maaaring maging sanhi ng pagkakalimutan ng handle na iyon kung ang
hindi pa nabubuksan ang hawakan. Naayos na ito.

· Iba't ibang kaso ng "delete $::{a}", "delete $::{ENV}" atbp. na nagdulot ng pag-crash ay
nakapirming. [perl #54044]

· Pagtatakda ng $! sa EACCESS bago tawaging "require" ay maaaring makaapekto sa "require"'s behavior.
Naayos na ito.

· Ang mensahe ng babala na "Hindi magagamit ang \1 ay $1 sa pagpapahayag" ay nangyayari lamang sa
kanang-kamay (kapalit) na bahagi ng isang pagpapalit. Dati maaaring mangyari ito sa code
naka-embed sa kaliwang bahagi, o sa anumang iba pang operator na tulad ng quote.

· Ang pagpapala sa isang sanggunian ("bless $thisref, $thatref") ay matagal nang hindi pinapayagan, ngunit
mahiwagang scalar para sa pangalawa tulad ng $/ at ang mga nakatali ay exempt. Hindi na sila
ay. [perl #119809]

· Ang pagpapala sa isang sanggunian ay hindi sinasadyang pinapayagan sa 5.18 kung ang argumento ng klase ay
isang pinagpalang sanggunian na may mga lipas na cache ng pamamaraan (ibig sabihin, na ang klase ay may tinukoy na mga sub
mula noong huling tawag sa pamamaraan). Ang mga ito ay hindi pinapayagan muli, tulad ng sa 5.16.

· "$x->{key}" kung saan ang $x ay idineklara bilang "aking Klase $x" ay hindi na nag-crash kung a
Class::FIELDS subroutine stub ay idineklara na.

· Ang @$obj{'key'} at "${$obj}{key}" ay dating exempt sa compile-time field checking
("Walang ganoong field ng klase"; tingnan ang mga field) ngunit wala na.

· Isang hindi umiiral na elemento ng array na may malaking index na ipinasa sa isang subroutine na nag-uugnay sa
array at pagkatapos ay sinusubukang i-access ang elemento ay hindi na nagreresulta sa isang pag-crash.

· Ang pagdedeklara ng subroutine stub na pinangalanang NEGATIVE_INDICES ay hindi na gumagawa ng negatibong array
nag-crash ang mga indeks kapag ang kasalukuyang package ay isang nakatali na klase ng array.

· Pagdedeklara ng "require", "glob", o "do" subroutine stub sa CORE::GLOBAL:: package
hindi na gumagawa ng compilation ng mga tawag sa mga kaukulang function na nag-crash.

· Aliasing CORE::GLOBAL:: ang mga function sa mga constant ay tumigil sa pagtatrabaho sa Perl 5.10 ngunit mayroon
ngayon ay naayos na.

· Kapag ang "`...`" o "qx/.../" ay tumawag sa isang "readpipe" na override, double-quotish interpolation
ngayon ay nangyayari, tulad ng kaso kapag walang override. Dati, ang pagkakaroon ng isang
ang pag-override ay gagawing parang "q{}" ang mga operator na ito na parang quote, na pinipigilan
interpolation. [perl #115330]

· "<<<`...`" here-docs (na may mga backtick bilang mga delimiter) na tinatawag na ngayon na "readpipe" na mga override.
[perl #119827]

· "&CORE::exit()" at "&CORE::die()" ngayon ay iginagalang ang mga pahiwatig ng vmsish.

· Ang hindi pagtukoy sa isang glob na nagti-trigger ng isang DESTROY na paraan na hindi tumutukoy sa parehong glob ay ngayon
ligtas. Dati itong gumawa ng mga babala na "Subukang palayain ang hindi naka-reference na glob pointer" at
tumagas ang memorya.

· Kung ang subroutine redefinition ("eval 'sub foo{}'" o "newXS" para sa XS code) ay nag-trigger ng isang
DESTROY method sa sub na nire-redefine, at ang paraang iyon ay nagtatalaga ng a
subroutine sa parehong slot ("*foo = sub {}"), hindi na iniwang nakaturo si $_[0] sa isang
pinalayang scalar. Ngayon ang DESTROY ay naantala hanggang sa mai-install ang bagong subroutine.

· Sa Windows, hindi na tumatawag si perl CloseHandle() sa isang socket handle. Ginagawa nitong
mas madali ang pag-debug sa Windows sa pamamagitan ng pag-alis ng ilang mga hindi nauugnay na hindi kaugnay na pagbubukod sa paghawak. Ito
nag-aayos din ng kundisyon ng lahi na naging random na nabigo ang mga function ng socket sa isang proseso ng Perl
na may maraming OS thread, at posibleng mga pagkabigo sa pagsubok
dist/IO/t/cachepropagate-tcp.t. [perl #120091/118059]

· Mga format na kinasasangkutan ng mga string na naka-encode ng UTF-8, o kakaibang mga vars tulad ng mga ties, overload, o
Ang mga stringified ref (at sa mga kamakailang perls, puro NOK vars) ay karaniwang gagawa ng mali
bagay sa mga format kapag ang var ay itinuturing bilang isang string at paulit-ulit na tinadtad, tulad ng sa
"^<<<<~~" at katulad nito. Nalutas na ito ngayon. [perl
#33832/45325/113868/119847/119849/119851]

· Itatakda ng "semctl(..., SETVAL, ...)" ang semaphore sa tuktok na 32-bit ng ibinigay
integer sa halip na ang ilalim na 32-bits sa 64-bit big-endian system. [perl #120635]

· Ang "readdir()" ngayon ay nagtatakda lamang ng $! sa pagkakamali. $! ay hindi na nakatakda sa "EBADF" kung kailan
Ang pagwawakas ng "undef" ay binabasa mula sa direktoryo maliban kung ang system call ay nagtatakda ng $!. [perl
# 118651]

· &CORE::glob ay hindi na nagiging sanhi ng pasulput-sulpot na pag-crash dahil sa pagkuha ng stack ng perl
corrupted. [perl #119993]

· "bukas" na may mga layer na naglo-load ng mga module (hal., "<:encoding(utf8)") ay hindi na nagpapatakbo ng
panganib ng pag-crash dahil sa stack corruption.

· Sinira ng Perl 5.18 ang autoloading sa pamamagitan ng "->SUPER::foo" method calls sa pamamagitan ng paghahanap sa AUTOLOAD
mula sa kasalukuyang package kaysa sa superclass ng kasalukuyang package. Ito ay naging
nakapirming. [perl #120694]

· Isang matagal nang bug na nagdudulot ng "gawin {} hanggang CONSTANT", kung saan ang constant ay totoo
halaga, upang basahin ang hindi inilalaang memorya ay nalutas na. Ito ay karaniwang mangyayari pagkatapos
isang syntax error. Sa mga nakaraang bersyon ng Perl, paulit-ulit itong nag-crash. [perl #72406]

· Ayusin ang HP-UX $! kabiguan. HP-UX strerror() nagbabalik ng walang laman na string para sa hindi kilalang error
code. Nagdulot ito ng pagkabigo sa isang assertion sa ilalim ng DEBUGGING build. Ngayon sa halip, ang
ibinalik na string para sa "$!" naglalaman ng text na nagsasaad na ang code ay para sa hindi kilalang error.

· Ang mga indibidwal na nakatali na elemento ng @INC (tulad ng sa "tie $INC[0]...") ay hinahawakan na ng tama.
Dati, kung ang isang sub na ibinalik ng naturang nakatali na elemento ay ituring bilang isang sub
depende sa kung may naganap na FETCH dati.

· "getc" sa isang byte-sized na handle pagkatapos gamitin ang parehong "getc" operator sa isang utf8
handle na ginagamit upang ituring ang mga byte bilang utf8, na nagreresulta sa maling pag-uugali (hal., malformed
Mga babala ng UTF-8).

· Ang isang inisyal na "{" sa simula ng isang format na linya ng argumento ay palaging binibigyang kahulugan bilang
ang simula ng isang block bago ang v5.18. Sa Perl v5.18, nagsimula itong tratuhin bilang
isang hindi maliwanag na tanda. Ang parser ay hulaan kung ito ay dapat na isang hindi kilalang
hash constructor o isang block batay sa mga nilalaman. Ngayon ang dating ugali ay mayroon
naibalik. [perl #119973]

· Sa Perl v5.18 "undef *_; goto &sub" at "local *_; goto &sub" nagsimulang mag-crash. Ito
ay naayos na. [perl #119949]

· Ang mga backticks (" `` " o " qx// ") na pinagsama sa maraming mga thread sa Win32 ay maaaring magresulta sa
output na ipinadala sa stdout sa isang thread na kinukuha ng mga backticks ng isang panlabas na command
sa ibang thread.

Ito ay maaaring mangyari para sa mga pseudo-forked na proseso din, dahil ang pseudo-fork ng Win32 ay
ipinatupad sa mga tuntunin ng mga thread. [perl #77672]

· Ang "open $fh, ">+", undef" ay hindi na tumagas ng memory kapag nakatakda ang TMPDIR ngunit tumuturo sa isang
direktoryo na hindi maaaring gawin ang pansamantalang file. [perl #120951]

· " para sa ( $h{k} || '' ) " ay hindi na awtomatikong nagbibigay-buhay sa $h{k}. [perl #120374]

· Sa mga makina ng Windows, ginagaya na ngayon ni Perl ang paggamit ng POSIX ng kapaligiran para sa lokal
pagsisimula. Dati, hindi pinapansin ang kapaligiran. Tingnan ang "KAPALIGIRAN" sa
perllocale.

· Inayos ang isang pag-crash kapag sinisira ang isang self-referencing GLOB. [perl #121242]

Kilala Mga Problema


· IO::Kilala ang Socket na hindi nagtagumpay sa mga pagsubok sa AIX 5.3. May patch
sa tracker ng kahilingan, #120835,
na maaaring ilapat sa mga release sa hinaharap.

· Ang mga sumusunod na module ay kilala na may mga pagkabigo sa pagsubok sa bersyong ito ng Perl.
Naisumite na ang mga patch, kaya sana may mga bagong release sa lalong madaling panahon:

· Data::Istruktura::Util na bersyon 0.15

· HTML::StripScripts bersyon 1.05

· Listahan:: Ipunin ang bersyon 0.08.

Obituary


Si Diana Rosa, 27, ng Rio de Janeiro, ay nagpahinga noong Mayo 10, 2014, kasama ang
plush camel na lagi niyang nakasabit sa screen ng kanyang computer. Siya ay isang madamdamin
Perl hacker na mahal ang wika at ang komunidad nito, at hindi kailanman napalampas ang isang kaganapan sa Rio.pm.
Siya ay isang tunay na artista, isang mahilig sa pagsulat ng code, pagkanta ng arias at grafffiting
mga pader. Hindi ka namin makakalimutan.

Namatay si Greg McCarroll noong Agosto 28, 2013.

Si Greg ay kilala sa maraming magagandang dahilan. Isa siya sa mga organizer ng una
YAPC::Europe, na nagtapos sa isang hindi naka-iskedyul na auction kung saan galit na galit niyang sinubukang
makalikom ng dagdag na pera upang maiwasang malugi ang kumperensya. Si Greg ang nagkamali
dumating para sa isang pulong sa london.pm huli ng isang linggo; makalipas ang ilang taon ay siya na ang nagbenta ng
pagpili ng opisyal na petsa ng pagpupulong sa isang YAPC::Europe auction, at kalaunan bilang maluwalhati
pinuno ng london.pm nakuha niyang manahin ang walang pakundangan na kalituhan na kanyang nilikha.

Palaging matulungin, palakaibigan at masayang optimistiko, mapapalampas ka, ngunit hindi kailanman
nakalimutan

Pagkilala


Ang Perl 5.20.0 ay kumakatawan sa humigit-kumulang 12 buwan ng pag-unlad mula noong Perl 5.18.0 at
naglalaman ng humigit-kumulang 470,000 linya ng mga pagbabago sa 2,900 file mula sa 124 na may-akda.

Hindi kasama ang mga awtomatikong nabuong file, dokumentasyon at mga tool sa paglabas, mayroong humigit-kumulang
280,000 linya ng mga pagbabago sa 1,800 .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.20.0:

Aaron Crane, Abhijit Menon-Sen, Abigail, Abir Viqar, Alan Haggai Alavi, Alan Hourihane,
Alexander Voronov, Alexandr Ciornii, Andy Dougherty, Anno Siegel, Aristotle Pagaltzis,
Arthur Axel 'fREW' Schmidt, Brad Gilbert, Brendan Byrd, Brian Childs, Brian Fraser, Brian
Gottreu, Chris 'BinGOs' Williams, Christian Millour, Colin Kuskie, Craig A. Berry, Dabrien
'Dabe' Murphy, Dagfinn Ilmari Mannsaaker, Daniel Dragan, Darin McBride, David Golden,
David Leadbeater, David Mitchell, David Nicol, David Steinbrunner, Dennis Kaarsemaker,
Dominic Hargreaves, Ed Avis, Eric Brine, Evan Zacks, Padre Chrysostomos, Florian Ragwitz,
Francois Perrad, Gavin Shelley, Gideon Israel Dsouza, Gisle Aas, Graham Knop, H.Merijn
Brand, Hauke ​​D, Heiko Eissfeldt, Hiroo Hayashi, Hojung Youn, James E Keenan, Jarkko
Hietaniemi, Jerry D. Hedden, Jess Robinson, Jesse Luehrs, Johan Vromans, John Gardiner
Myers, John Goodyear, John P. Linderman, John Peacock, kafka, Kang-min Liu, Karen
Etheridge, Karl Williamson, Keedi Kim, Kent Fredric, kevin dawson, Kevin Falcone, Kevin
Ryde, Leon Timmermans, Lukas Mai, Marc Simpson, Marcel Gruenauer, Marco Peereboom, Marcus
Holland-Moritz, Mark Jason Dominus, Martin McGrath, Matthew Horsfall, Max Maischein, Mike
Doherty, Moritz Lenz, Nathan Glenn, Nathan Trapuzzano, Neil Bowers, Neil Williams,
Nicholas Clark, Niels Thykier, Niko Tyni, Olivier Mengue, Owain G. Ainsworth, Paul Green,
Paul Johnson, Peter John Acklam, Peter Martini, Peter Rabbitson, Petr PisaX, Philip
Boulain, Philip Guenther, Piotr Roszatycki, Rafael Garcia-Suarez, Reini Urban, Reuben
Thomas, Ricardo Signes, Ruslan Zakirov, Sergey Alekseev, Shirakata Kentaro, Shlomi Fish,
Slaven Rezic, Smylers, Steffen Mueller, Steve Hay, Sullivan Beck, Thomas Sibley, Tobias
Leich, Toby Inkster, Tokuhiro Matsuno, Tom Christiansen, Tom Hukins, Tony Cook, Victor
Efimov, Viktor Turskyi, Vladimir Timofeev, YAMASHINA Hio, Yves Orton, Zefram, Zsban
Ambrus, 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 http://rt.perl.org/perlbug/ .
Maaaring mayroon ding impormasyon sa http://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 perl5200delta online gamit ang mga serbisyo ng onworks.net


Mga Libreng Server at Workstation

Mag-download ng Windows at Linux apps

  • 1
    authpass
    authpass
    Ang AuthPass ay isang open source na password
    manager na may suporta para sa sikat at
    napatunayang Keepass (kdbx 3.x AT kdbx 4.x ...
    I-download ang authpass
  • 2
    Zabbix
    Zabbix
    Ang Zabbix ay isang enterprise-class na bukas
    pinagmumulan na ibinahagi ng solusyon sa pagsubaybay
    dinisenyo upang subaybayan at subaybayan
    pagganap at pagkakaroon ng network
    mga server, device...
    I-download ang Zabbix
  • 3
    KDiff3
    KDiff3
    Hindi na pinapanatili ang repositoryong ito
    at iniingatan para sa mga layunin ng archival. Tingnan mo
    https://invent.kde.org/sdk/kdiff3 for
    ang pinakabagong code at
    https://download.kde.o...
    I-download ang KDiff3
  • 4
    USBLoaderGX
    USBLoaderGX
    Ang USBLoaderGX ay isang GUI para sa
    Ang USB Loader ni Waninkoko, batay sa
    libwiigui. Pinapayagan nito ang paglilista at
    paglulunsad ng mga Wii games, Gamecube games at
    homebrew sa Wii at WiiU...
    I-download ang USBLoaderGX
  • 5
    Firebird
    Firebird
    Nag-aalok ang Firebird RDBMS ng mga tampok ng ANSI SQL
    & tumatakbo sa Linux, Windows at
    ilang mga platform ng Unix. Mga tampok
    mahusay na pagkakatugma at pagganap
    at kapangyarihan...
    I-download ang Firebird
  • 6
    KompoZer
    KompoZer
    Ang KompoZer ay isang wysiwyg HTML editor gamit ang
    ang Mozilla Composer codebase. Bilang
    Nahinto ang pag-unlad ni Nvu
    noong 2005, inaayos ng KompoZer ang maraming mga bug at
    nagdadagdag ng f...
    I-download ang KompoZer
  • Marami pa »

Linux command

Ad