Ito ang command na perl56delta 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
perl56delta - ano ang bago para sa perl v5.6.0
DESCRIPTION
Inilalarawan ng dokumentong ito ang mga pagkakaiba sa pagitan ng release na 5.005 at ng release na 5.6.0.
Ubod Mga Pagpapahusay
Tagapagsalin pag-clone, mga thread, at pagkakasundo
Ipinakilala ng Perl 5.6.0 ang simula ng suporta para sa pagpapatakbo ng maraming interpreter
sabay-sabay sa iba't ibang mga thread. Kasabay ng perl_clone() API call, na
ay maaaring gamitin upang piliing i-duplicate ang estado ng anumang ibinigay na interpreter, posible na
mag-compile ng isang piraso ng code nang isang beses sa isang interpreter, i-clone ang interpreter na iyon ng isa o higit pang beses,
at patakbuhin ang lahat ng nagreresultang interpreter sa mga natatanging thread.
Sa platform ng Windows, ginagamit ang feature na ito para tularan tinidor () sa antas ng interpreter.
Tingnan ang perlfork para sa mga detalye tungkol doon.
Ang tampok na ito ay nasa ebolusyon pa rin. Sa kalaunan ay nilalayong gamitin ito nang pili
I-clone ang isang subroutine at data na maaabot mula sa subroutine na iyon sa isang hiwalay na interpreter at
patakbuhin ang na-clone na subroutine sa isang hiwalay na thread. Dahil walang nakabahaging data sa pagitan ng
mga interpreter, kaunti o walang pagla-lock ang kakailanganin (maliban kung ang mga bahagi ng talahanayan ng simbolo ay
tahasang ibinahagi). Ito ay malinaw na inilaan upang maging isang madaling gamitin na kapalit para sa
suporta sa umiiral na mga thread.
Maaaring paganahin ang suporta para sa pag-clone ng mga interpreter at interpreter concurrency gamit ang
-Dusethreads Configure na opsyon (tingnan ang win32/Makefile para sa kung paano ito paganahin sa Windows.) Ang
ang magreresultang perl executable ay magiging kapareho ng pagganap sa isa na binuo gamit
-Dmultiplicity, ngunit ang perl_clone() Magiging available lang ang API call sa dating.
-Dusethreads ay nagbibigay-daan sa cpp macro USE_ITHREADS bilang default, na kung saan ay nagbibigay-daan sa Perl
mga pagbabago sa source code na nagbibigay ng malinaw na paghihiwalay sa pagitan ng op tree at ng data nito
gumagana sa. Ang dating ay hindi nababago, at samakatuwid ay maaaring ibahagi sa pagitan ng isang
interpreter at lahat ng mga clone nito, habang ang huli ay itinuturing na lokal sa bawat isa
interpreter, at samakatuwid ay kinopya para sa bawat clone.
Tandaan na ang pagbuo ng Perl gamit ang -Dusemultiplicity Configure na opsyon ay sapat kung ikaw
gustong magpatakbo ng maramihan malaya mga interpreter nang sabay-sabay sa iba't ibang mga thread.
-Dusethreads ay nagbibigay lamang ng karagdagang pag-andar ng perl_clone() API call at
iba pang suporta para sa pagtakbo naka-clone mga interpreter nang sabay-sabay.
TANDAAN: Ito ay isang pang-eksperimentong tampok. Ang mga detalye ng pagpapatupad ay
napapailalim sa pagbabago.
Lexically scoped babala mga kategorya
Makokontrol mo na ngayon ang granularity ng mga babala na inilalabas ng perl sa mas pinong antas gamit ang
"gumamit ng mga babala" pragma. ang mga babala at perllexwarn ay may napakaraming dokumentasyon tungkol dito
tampok.
Unicode at UTF-8 suportahan
Ginagamit na ngayon ng Perl ang UTF-8 bilang panloob na representasyon nito para sa mga string ng character. Ang "utf8" at
Ang mga "bytes" na pragma ay ginagamit upang kontrolin ang suportang ito sa kasalukuyang lexical na saklaw. Tingnan mo
perlunicode, utf8 at bytes para sa karagdagang impormasyon.
Ang tampok na ito ay inaasahang mabilis na mag-evolve upang suportahan ang ilang uri ng mga disiplinang I/O na
ay maaaring gamitin upang tukuyin ang uri ng input at output data (bytes o character). Hanggang sa
Nangyayari iyon, kakailanganin ang mga karagdagang module mula sa CPAN upang makumpleto ang toolkit para sa
pakikitungo sa Unicode.
TANDAAN: Dapat itong ituring na isang pang-eksperimentong tampok. Pagpapatupad
ang mga detalye ay maaaring magbago.
Suporta para interpolating pinangalanan character
Ang bagong "\N" escape ay nag-interpolate ng mga pinangalanang character sa loob ng mga string. Halimbawa, "Hi!
Ang \N{WHITE SMILING FACE}" ay nagsusuri sa isang string na may unicode na smiley na mukha sa dulo.
"atin" deklarasyon
Ang isang "aming" deklarasyon ay nagpapakilala ng isang halaga na pinakamahusay na mauunawaan bilang isang lexically scoped
simbolikong alias sa isang pandaigdigang variable sa package na kasalukuyang kung saan naroon ang variable
ipinahayag. Ito ay kadalasang kapaki-pakinabang bilang alternatibo sa "vars" pragma, ngunit nagbibigay din
ang pagkakataong ipakilala ang pag-type at iba pang mga katangian para sa mga naturang variable. Tingnan ang "aming" sa
perlfunc.
Suporta para string kinakatawan as a vector of mga ordinal
Ang mga literal ng anyong "v1.2.3.4" ay na-parse na ngayon bilang isang string na binubuo ng mga character na may
mga tinukoy na ordinal. Ito ay isang alternatibo, mas nababasang paraan upang bumuo (maaaring
unicode) na mga string sa halip na mag-interpolate ng mga character, tulad ng sa "\x{1}\x{2}\x{3}\x{4}". Ang
Ang nangungunang "v" ay maaaring tanggalin kung mayroong higit sa dalawang ordinal, kaya ang 1.2.3 ay na-parse ang
katulad ng "v1.2.3".
Ang mga string na nakasulat sa form na ito ay kapaki-pakinabang din upang kumatawan sa bersyon na "mga numero". Ito ay madali
upang ihambing ang naturang bersyon na "mga numero" (na talagang simpleng mga string) gamit ang alinman sa
karaniwang mga operator ng paghahambing ng string na "eq", "ne", "lt", "gt", atbp., o gumaganap ng bitwise na string
mga operasyon sa kanila gamit ang "|", "&", atbp.
Kasabay ng bagong $^V magic variable (na naglalaman ng perl na bersyon bilang a
string), ang mga literal na iyon ay maaaring gamitin bilang isang nababasang paraan upang suriin kung nagpapatakbo ka ng a
partikular na bersyon ng Perl:
# ito ay mag-parse din sa mga mas lumang bersyon ng Perl
kung ($^V at $^V gt v5.6.0) {
# bagong feature ang sinusuportahan
}
Ang "require" at "use" ay mayroon ding ilang espesyal na magic upang suportahan ang mga ganoong literal, ngunit ito
ang partikular na paggamit ay dapat na iwasan dahil ito ay humahantong sa mapanlinlang na mga mensahe ng error sa ilalim
mga bersyon ng Perl na hindi sumusuporta sa mga string ng vector. Ang paggamit ng isang tunay na numero ng bersyon ay
tiyakin ang tamang pag-uugali sa lahat ng bersyon ng Perl:
nangangailangan ng 5.006; # run time check para sa v5.6
gumamit ng 5.006_001; # compile time check para sa v5.6.1
Gayundin, sinusuportahan ng "sprintf" at "printf" ang flag na format na partikular sa Perl na %v upang mag-print ng mga ordinal ng
mga character sa arbitrary na mga string:
printf "v%vd", $^V; # nagpi-print ng kasalukuyang bersyon, gaya ng "v5.5.650"
printf "%*vX", ":", $addr; # na mga format ng IPv6 address
printf "%*vb", " ", $bits; # nagpapakita ng bitstring
Tingnan ang "Scalar value constructors" sa perldata para sa karagdagang impormasyon.
Pinabuti Perl bersyon pagnunumero sistema
Simula sa Perl version 5.6.0, ang version number convention ay binago sa a
"dotted integer" scheme na mas karaniwang makikita sa mga open source na proyekto.
Ang mga bersyon ng pagpapanatili ng v5.6.0 ay ilalabas bilang v5.6.1, v5.6.2 atbp. Ang susunod
Ang mga serye ng pag-unlad na kasunod ng v5.6.0 ay bibigyan ng bilang na v5.7.x, simula sa v5.7.0, at
ang susunod na pangunahing release ng produksyon kasunod ng v5.6.0 ay magiging v5.8.0.
Itinatakda na ngayon ng English module ang $PERL_VERSION sa $^V (isang string value) sa halip na $] (a
numerong halaga). (Ito ay isang potensyal na hindi pagkakatugma. Magpadala sa amin ng isang ulat sa pamamagitan ng perlbug kung
apektado ka dito.)
Ang v1.2.3 syntax ay legal na rin ngayon sa Perl. Tingnan ang "Suporta para sa mga string na kinakatawan bilang a
vector of ordinals" para sa higit pa tungkol diyan.
Upang makayanan ang paggamit ng bagong versioning system ng hindi bababa sa tatlong makabuluhang digit para sa bawat isa
bahagi ng bersyon, ang paraan na ginamit para sa pagtaas ng numero ng subversion ay nagbago din
bahagya. Ipinapalagay namin na ang mga bersyon na mas luma sa v5.6.0 ay dinaragdagan ang pagbabagsak
component sa multiple ng 10. Ang mga bersyon pagkatapos ng v5.6.0 ay magdaragdag sa kanila ng 1. Kaya,
gamit ang bagong notasyon, ang 5.005_03 ay "kapareho" ng v5.5.30, at ang unang pagpapanatili
bersyon kasunod ng v5.6.0 ay magiging v5.6.1 (na dapat basahin bilang katumbas ng isang
floating point value na 5.006_001 sa mas lumang format, na nakaimbak sa $]).
bago palaugnayan para deklarasyon subroutine mga katangian
Dati, kung gusto mong markahan ang isang subroutine bilang isang method call o bilang nangangailangan ng isang
awtomatik lock() kapag ito ay ipinasok, kailangan mong ideklara iyon gamit ang isang "use attrs" pragma in
ang katawan ng subroutine. Magagawa na iyon sa syntax ng deklarasyon, tulad ng
ito:
sub mymethod : naka-lock na paraan;
...
sub mymethod : naka-lock na paraan {
...
}
sub othermethod :locked :method;
...
sub othermethod :locked :method {
...
}
(Tandaan kung paanong ang unang ":" lang ang sapilitan, at ang whitespace na nakapalibot sa ":" ay
opsyonal.)
AutoSplit.pm at SelfLoader.pm na-update upang mapanatili ang mga katangian na may mga stub
sila ay nagbigay. Tingnan ang mga katangian.
talaksan at direktoryo humahawak maaari be autovivified
Katulad ng kung paano ang mga konstruksyon gaya ng "$x->[0]" ay nag-aauto-buhay sa isang reference, pinangangasiwaan ang mga konstruktor
(bukas(), opendir(), tubo(), socketpair(), sysopen(), socket (), at tanggapin ()) ngayon
autovivify ang isang file o directory handle kung ang handle na ipinasa sa kanila ay isang uninitialized
scalar variable. Pinapayagan nito ang mga konstruksyon tulad ng "open(my $fh, ...)" at "open(local
$fh,...)" na gagamitin upang lumikha ng mga filehandle na awtomatikong maisasara
kapag natapos ang saklaw, sa kondisyon na walang iba pang mga sanggunian sa mga ito. Ito sa kalakhan
inaalis ang pangangailangan para sa mga typeglob kapag binubuksan ang mga filehandle na dapat ipasa sa paligid, bilang
sa sumusunod na halimbawa:
sub myopen {
buksan ang aking $fh, "@_"
o mamatay "Hindi mabuksan ang '@_': $!";
ibalik ang $fh;
}
{
my $f = myopen("
i-print ang <$f>;
# $f tahasang isinara dito
}
bukas() sa mas marami pang kaysa dalawa argumento
If bukas() ay pumasa sa tatlong argumento sa halip na dalawa, ang pangalawang argumento ay ginagamit bilang ang
mode at ang ikatlong argumento ay kinuha na ang pangalan ng file. Ito ay pangunahing kapaki-pakinabang para sa
pagprotekta laban sa hindi sinasadyang pag-uugali ng mahika ng tradisyonal na dalawang-argumentong anyo. Tingnan mo
"bukas" sa perlfunc.
64-bit suportahan
Anumang platform na mayroong 64-bit integer
(1) natively bilang longs o ints
(2) sa pamamagitan ng mga espesyal na flag ng compiler
(3) gamit ang long long o int64_t
ay maaaring gumamit ng "quads" (64-bit integers) tulad ng sumusunod:
· mga constant (decimal, hexadecimal, octal, binary) sa code
· mga argumento sa okt() at hex()
· mga argumento sa i-print (), printf() at sprintf() (mga prefix ng bandila ll, L, q)
· nakalimbag tulad nito
· pack() at i-unpack() "q" at "Q" na mga format
· sa mga pangunahing aritmetika: + - * / % (TANDAAN: tumatakbo malapit sa mga limitasyon ng integer
ang mga halaga ay maaaring makagawa ng nakakagulat na mga resulta)
· sa bit arithmetics: & | ^ ~ << >> (TANDAAN: ang mga ito ay dating pinilit na maging 32 bits ang lapad
ngunit ngayon ay nagpapatakbo sa buong katutubong lapad.)
· vec()
Tandaan na maliban kung mayroon kang kaso (a) kakailanganin mong i-configure at i-compile ang Perl gamit
ang -Duse64bitint Configure flag.
TANDAAN: Ang I-configure ang mga flag -Duselonglong at -Duse64bits ay naging
hindi na ginagamit. Gamitin ang -Duse64bitint sa halip.
Mayroong talagang dalawang mga mode ng 64-bitness: ang una ay nakakamit gamit ang Configure
-Duse64bitint at ang pangalawa gamit ang Configure -Duse64bitall. Ang pagkakaiba ay iyon
ang una ay minimal at ang pangalawa ay pinakamalaki. Ang una ay gumagana sa mas maraming lugar kaysa
ang ikalawa.
Ang "use64bitint" ay gumagawa lamang hangga't kinakailangan upang makakuha ng 64-bit na integer sa Perl (ito
ay maaaring mangahulugan, halimbawa, gamit ang "mahabang matagal") habang ang iyong memorya ay maaaring limitado pa rin sa 2
gigabytes (dahil ang iyong mga pointer ay maaari pa ring 32-bit). Tandaan na ang pangalang "64bitint"
ay hindi nagpapahiwatig na ang iyong C compiler ay gagamit ng 64-bit na "int" (maaaring ito, ngunit hindi
kailangan): ang ibig sabihin ng "use64bitint" ay magkakaroon ka ng 64 bits wide scalar
halaga.
Ang "use64bitall" ay nagpapatuloy sa pamamagitan ng pagtatangkang lumipat din ng mga integer (kung maaari),
longs (at pointers) sa pagiging 64-bit. Maaari itong lumikha ng higit pang binary na hindi tugma
Perl kaysa sa -Duse64bitint: ang resultang executable ay maaaring hindi tumakbo sa isang 32-bit na kahon, o
maaaring kailanganin mong i-reboot/reconfigure/muling itayo ang iyong operating system upang maging 64-bit na kamalayan.
Ang mga native na 64-bit system tulad ng Alpha at Cray ay hindi nangangailangan ng -Duse64bitint o -Duse64bitall.
Panghuli ngunit hindi bababa sa: tandaan na dahil sa ugali ni Perl na palaging gumagamit ng mga floating point na numero,
ang quads ay hindi pa rin tunay na mga integer. Kapag umaapaw ang quads sa kanilang mga limitasyon
(0...18_446_744_073_709_551_615 unsigned,
-9_223_372_036_854_775_808...9_223_372_036_854_775_807 signed), they are silently promoted
sa mga numero ng floating point, pagkatapos nito ay magsisimula silang mawalan ng katumpakan (sa kanilang mas mababang
mga digit).
TANDAAN: Ang 64-bit na suporta ay eksperimental pa rin sa karamihan ng mga platform.
Saklaw lang ng kasalukuyang suporta ang modelo ng data ng LP64. Sa partikular, ang
Hindi pa sinusuportahan ang modelo ng data ng LLP64. 64-bit na mga aklatan at sistema
Ang mga API sa maraming platform ay hindi na-stabilize--maaaring mag-iba ang iyong mileage.
Malaki file suportahan
Kung mayroon kang mga filesystem na sumusuporta sa "malalaking file" (mga file na mas malaki sa 2 gigabytes), ikaw
maaari na rin ngayong magawa at ma-access ang mga ito mula sa Perl.
TANDAAN: Ang default na aksyon ay upang paganahin ang malaking suporta sa file, kung
magagamit sa platform.
Kung naka-on ang malaking file support, at mayroon kang Fcntl constant na O_LARGEFILE, ang
Awtomatikong idinaragdag ang O_LARGEFILE sa mga flag ng sysopen().
Mag-ingat na maliban na lang kung sinusuportahan din ng iyong filesystem ang "mga kalat-kalat na file" na naghahanap ng marami
maaaring hindi maipapayo ang mga petabytes.
Tandaan na bilang karagdagan sa pag-aatas ng wastong file system na gumawa ng malalaking file ay maaari mo rin
kailangang ayusin ang iyong per-process (o ang iyong per-system, o per-process-group, o per-user-
group) maximum na mga limitasyon sa laki ng file bago patakbuhin ang mga Perl script na sumusubok na humawak ng malalaking file,
lalo na kung balak mong magsulat ng mga ganoong file.
Sa wakas, bilang karagdagan sa iyong proseso/pangkat ng proseso ng maximum na mga limitasyon sa laki ng mga file, maaaring mayroon ka
mga limitasyon ng quota sa iyong mga filesystem na humihinto sa iyo (iyong user id o iyong user group id) mula sa
gamit ang malalaking file.
Ang pagsasaayos ng iyong proseso/user/group/file system/mga limitasyon ng operating system ay nasa labas ng saklaw
ng pangunahing wika ng Perl. Para sa mga limitasyon sa proseso, maaari mong subukang taasan ang mga limitasyon gamit ang iyong
mga limitasyon/limitasyon/ulimit ng shell bago patakbuhin ang Perl. Ang extension ng BSD::Resource (hindi
kasama sa karaniwang pamamahagi ng Perl) ay maaari ding magamit, nag-aalok ito ng
getrlimit/setrlimit interface na maaaring magamit upang ayusin ang mga limitasyon sa paggamit ng mapagkukunan ng proseso,
kasama ang maximum na limitasyon sa laki ng file.
Mahaba doble
Sa ilang mga system maaari kang gumamit ng mahahabang doubles upang mapahusay ang saklaw at katumpakan ng
iyong double precision floating point na mga numero (iyon ay, mga numero ni Perl). Gamitin ang I-configure
-Duselongdouble upang paganahin ang suportang ito (kung ito ay magagamit).
"higit pa piraso"
Maaari mong "I-configure ang -Dusemorebits" upang i-on ang parehong 64-bit na suporta at ang mahabang double
support.
Pinahusay na suportahan para pag-uri-uriin () subroutines
Ang mga subroutine ng Perl na may prototype na "($$)", at mga XSUB sa pangkalahatan, ay maaari na ngayong gamitin bilang pag-uuri
mga subroutine. Sa alinmang kaso, ang dalawang elementong ihahambing ay ipinapasa bilang normal
mga parameter sa @_. Tingnan ang "sort" sa perlfunc.
Para sa unprototyped sort subroutines, ang makasaysayang gawi ng pagpasa sa mga elementong dapat
kumpara habang ang mga pandaigdigang variable na $a at $b ay nananatiling hindi nagbabago.
"uri-uriin $coderef @foo" pinapayagan
pag-uri-uriin () ay hindi tumanggap ng subroutine na sanggunian bilang ang pagpapaandar ng paghahambing sa mas maaga
mga bersyon. Ito ay pinahihintulutan na ngayon.
talaksan globbing ipinatupad sa loob
Ginagamit na ngayon ng Perl ang File::Glob na pagpapatupad ng glob() awtomatikong operator. Ito
iniiwasan ang paggamit ng panlabas na proseso ng csh at ang mga problemang nauugnay dito.
TANDAAN: Ito ay kasalukuyang isang pang-eksperimentong tampok. Mga interface at
ang pagpapatupad ay napapailalim sa pagbabago.
Suporta para CHECK bloke
Bilang karagdagan sa "BEGIN", "INIT", "END", "DESTROY" at "AUTOLOAD", mga subroutine na pinangalanang "CHECK"
ay espesyal na ngayon. Ang mga ito ay nakapila sa panahon ng compilation at kumikilos katulad ng END blocks,
maliban kung sila ay tinatawag sa dulo ng compilation sa halip na sa dulo ng execution.
Hindi sila direktang matawagan.
POSIX katangian klase palaugnayan [: :] suportado
Halimbawa upang tumugma sa mga alphabetic na character ay gumamit ng /[[:alpha:]]/. Tingnan ang perlre para sa mga detalye.
Mas mabuti pseudo-random numero dyeneretor
Sa 5.005_0x at mas maaga, ang perl's rand() function na ginamit ang C library Rand(3) function. Bilang
ng 5.005_52, I-configure ang mga pagsubok para sa drand48(), random (), at rand() (sa ganoong pagkakasunud-sunod) at pumili
ang unang nahanap nito.
Ang mga pagbabagong ito ay dapat magresulta sa mas mahusay na mga random na numero mula sa rand().
Pinabuti "qw//" opereytor
Ang operator na "qw//" ay sinusuri na ngayon sa oras ng pag-compile sa isang totoong listahan sa halip na maging
pinalitan ng isang run time na tawag sa "split()". Inaalis nito ang nakakalito na maling pag-uugali ng
"qw//" sa kontekstong scalar, kung saan nagmana ang pag-uugaling iyon mula sa hatiin ().
Kaya:
$foo = ($bar) = qw(abc); i-print ang "$foo|$bar\n";
ngayon ay tama ang pag-print ng "3|a", sa halip na "2|a".
Mas mabuti pinakamasamang kaso pag-uugali of mga hash
Ang mga maliliit na pagbabago sa algorithm ng hashing ay ipinatupad upang mapabuti ang
pamamahagi ng mga mas mababang order bit sa hashed na halaga. Ito ay inaasahang magbubunga ng mas mahusay
pagganap sa mga key na paulit-ulit na pagkakasunud-sunod.
pack() format 'Z' suportado
Ang bagong uri ng format na 'Z' ay kapaki-pakinabang para sa pag-iimpake at pag-unpack ng mga null-terminated na string. Tingnan mo
"pack" sa perlfunc.
pack() format pagbabago '!' suportado
Ang bagong uri ng format modifier '!' ay kapaki-pakinabang para sa pag-iimpake at pag-unpack ng mga katutubong shorts, ints,
at naghahangad. Tingnan ang "pack" sa perlfunc.
pack() at i-unpack() suportahan binibilang string
Maaaring gamitin ang template na character na '/' upang tukuyin ang isang binilang uri ng string na iimpake o
na-unpack. Tingnan ang "pack" sa perlfunc.
Comments in pack() template
Ang '#' na character sa isang template ay nagpapakilala ng komento hanggang sa dulo ng linya. Ito
pinapadali ang dokumentasyon ng pack() mga template.
Mahina sanggunian
Sa mga nakaraang bersyon ng Perl, hindi mo mai-cache ang mga bagay upang payagan ang mga ito na matanggal
kung ang huling sanggunian mula sa labas ng cache ay tinanggal. Ang sanggunian sa cache ay gagawin
humawak ng isang bilang ng sanggunian sa bagay at ang mga bagay ay hindi kailanman masisira.
Ang isa pang pamilyar na problema ay sa mga pabilog na sanggunian. Kapag ang isang bagay ay tumutukoy sa sarili nito,
ang bilang ng sanggunian nito ay hindi bababa sa zero, at hindi ito masisira hanggang sa
malapit nang lumabas ang programa.
Ang mga mahihinang sanggunian ay malulutas ito sa pamamagitan ng pagpapahintulot sa iyong "pahina" ang anumang sanggunian, ibig sabihin, huwag gawin ito
bilangin patungo sa bilang ng sanggunian. Kapag ang huling hindi mahinang sanggunian sa isang bagay ay
tinanggal, ang bagay ay nawasak at ang lahat ng mahinang mga sanggunian sa bagay ay
awtomatikong undef-ed.
Para magamit ang feature na ito, kailangan mo ang Devel::WeakRef package mula sa CPAN, na naglalaman ng
karagdagang dokumentasyon.
TANDAAN: Ito ay isang pang-eksperimentong tampok. Maaaring magbago ang mga detalye.
binary numero suportado
Ang mga binary na numero ay sinusuportahan na ngayon bilang mga literal, sa mga s?printf na format, at "oct()":
$sagot = 0b101010;
printf "Ang sagot ay: %b\n", oct("0b101010");
Lvalue subroutines
Maaari na ngayong ibalik ng mga subroutine ang mga nababagong halaga. Tingnan ang "Lvalue subroutines" sa perlsub.
TANDAAN: Ito ay isang pang-eksperimentong tampok. Maaaring magbago ang mga detalye.
ilan mga arrow maaari be tinanggal in tawag sa pamamagitan ng sanggunian
Pinapayagan na ngayon ng Perl na alisin ang arrow sa maraming mga construct na kinasasangkutan ng mga subroutine na tawag
sa pamamagitan ng mga sanggunian. Halimbawa, ang "$foo[10]->('foo')" ay maaari na ngayong isulat
"$foo[10]('foo')". Ito ay medyo katulad sa kung paano maaaring alisin ang arrow
"$foo[10]->{'foo'}". Gayunpaman, tandaan na ang arrow ay kinakailangan pa rin para sa
"foo(10)->('bar')".
boolean trabaho operator ay legal mga halaga
Ang mga konstruksyon tulad ng "($a ||= 2) += 1" ay pinapayagan na ngayon.
umiiral() is suportado on subroutine pangalan
Ang umiiral() gumagana na ngayon ang builtin sa mga subroutine na pangalan. Ang isang subroutine ay itinuturing na umiiral
kung ito ay ipinahayag (kahit na implicitly). Tingnan ang "umiiral" sa perlfunc para sa mga halimbawa.
umiiral() at tanggalin () ay suportado on ayos mga elemento
Ang umiiral() at tanggalin () Ang mga builtin ay gumagana na rin sa mga simpleng array. Ang pag-uugali ay
katulad ng sa mga elemento ng hash.
umiiral() ay maaaring magamit upang suriin kung ang isang elemento ng array ay nasimulan. Iniiwasan nito
autovivifying array elemento na hindi umiiral. Kung ang array ay nakatali, ang EXISTS() paraan
sa kaukulang nakatali na pakete ay ipapatawag.
tanggalin () ay maaaring gamitin upang alisin ang isang elemento mula sa array at ibalik ito. Ang elemento ng array
sa posisyong iyon ay bumalik sa hindi nasimulang estado nito, upang ang pagsubok para sa parehong elemento
sa umiiral() magbabalik ng mali. Kung ang elemento ay ang nasa dulo, ang
ang laki ng array ay lumiliit din hanggang sa pinakamataas na elemento na sumusubok na totoo para sa umiiral(), O
0 kung walang ganoong nahanap. Kung ang array ay nakatali, ang DELETE() pamamaraan sa kaukulang
tatawagin ang nakatali na pakete.
Tingnan ang "umiiral" sa perlfunc at "tanggalin" sa perlfunc para sa mga halimbawa.
Pseudo-hashes trabaho mas mabuti
Pagdereference ng ilang uri ng mga value ng reference sa isang pseudo-hash, gaya ng "$ph->{foo}[1]",
ay hindi sinasadyang hindi pinayagan. Ito ay naitama.
Kapag inilapat sa isang pseudo-hash na elemento, umiiral() ngayon ay nag-uulat kung ang tinukoy na halaga
umiiral, hindi lamang kung ang susi ay wasto.
tanggalin () gumagana na ngayon sa pseudo-hashes. Kapag binigyan ng pseudo-hash na elemento o hiwa, tinatanggal nito
ang mga halaga na naaayon sa mga susi (ngunit hindi ang mga susi mismo). Tingnan ang "Pseudo-hashes:
Paggamit ng array bilang hash" sa perlref.
Ang mga pseudo-hash slice na may mga pare-parehong key ay na-optimize na ngayon upang mag-array ng mga lookup sa oras ng pag-compile.
Ang listahan ng mga pagtatalaga sa pseudo-hash slice ay sinusuportahan na ngayon.
Ang "fields" pragma ay nagbibigay na ngayon ng mga paraan upang lumikha ng mga pseudo-hashes, sa pamamagitan ng fields::new() at
mga patlang::phash(). Tingnan ang mga patlang.
TANDAAN: Ang pseudo-hash na uri ng data ay patuloy na pang-eksperimento.
Nililimitahan ang sarili sa mga elemento ng interface na ibinigay ng
fields pragma ay magbibigay ng proteksyon mula sa anumang mga pagbabago sa hinaharap.
Awtomatik flushing of output buffers
tinidor (), exec(), sistema(), qx//, at pipe bukas()s ngayon flush buffer ng lahat ng mga file na binuksan para sa
output kapag sinubukan ang operasyon. Ito ay kadalasang nag-aalis ng nakakalito na buffering
mga mishap na dinanas ng mga user na hindi alam kung paano panloob na pinangangasiwaan ng Perl ang I/O.
Ito ay hindi suportado sa ilang mga platform tulad ng Solaris kung saan isang naaangkop na tama
ang pagpapatupad ng fflush(NULL) ay hindi magagamit.
Mas mabuti mga diagnostic on walang kabuluhan filehandle pagpapatakbo
Mga construct tulad ng "open( )" at "malapit( )" ay mga error sa oras ng pag-compile. Sinusubukang
nabasa mula sa mga filehandle na binuksan lamang para sa pagsusulat ay gagawa na ngayon ng mga babala (tulad ng
pagsusulat sa read-only filehandles ay ginagawa).
Saan maaari, buffered data itinapon mula dinaya input filehandle
Sinusubukan na ngayon ng "open(NEW, "<&OLD")" na itapon ang anumang data na dati nang nabasa at
buffered sa "OLD" bago duping ang handle. Sa mga platform kung saan pinapayagan ang paggawa nito, ang
Ang susunod na read operation sa "BAGO" ay magbabalik ng parehong data bilang ang kaukulang operasyon sa
"MATANDA". Dati, ibinalik nito ang data mula sa simula ng sumusunod na disk
humarang sa halip.
eof() ay ang pareho luma salamangka as <>
Ang "eof()" ay babalik ng true kung wala pang pagsubok na basahin mula sa "<>" ang nagawa pa. Ang "eof()" ay mayroong
ay binago upang magkaroon ng sariling salamangka, nagbubukas na ito ngayon ng mga "<>" na file.
binmode() maaari be ginamit sa itakda :crlf at :hilaw mode
binmode() tumatanggap na ngayon ng pangalawang argumento na tumutukoy sa isang disiplina para sa handle in
tanong. Ang dalawang pseudo-disciplines na ":raw" at ":crlf" ay kasalukuyang sinusuportahan sa DOS-
mga derivative platform. Tingnan ang "binmode" sa perlfunc at bukas.
"-T" filetest Nakikilala UTF-8 naka-encode file as "text"
Ang algorithm na ginamit para sa "-T" filetest ay pinahusay upang matukoy nang tama ang UTF-8
nilalaman bilang "teksto".
sistema(), mga backtick at tubo buksan ngayon ipakita exec() pagkabigo
Sa Unix at katulad na mga platform, sistema(), qx() at open(FOO, "cmd |") atbp., ay ipinatupad
sa pamamagitan ng tinidor () at exec(). Kapag ang pinagbabatayan exec() nabigo, hindi nag-ulat ang mga naunang bersyon
ang error nang maayos, dahil ang exec() nangyari na nasa ibang proseso.
Nakikipag-ugnayan na ngayon ang proseso ng bata sa magulang tungkol sa error sa paglulunsad ng
panlabas na utos, na nagpapahintulot sa mga konstruksyon na ito na bumalik kasama ng kanilang karaniwang halaga ng error at
itakda ang $!.
Pinabuti mga diagnostic
Ang mga numero ng linya ay hindi na pinipigilan (sa mga malamang na pagkakataon) sa panahon ng pandaigdigan
yugto ng pagkawasak.
Ang mga diagnostic na ibinubuga mula sa code na tumatakbo sa mga thread maliban sa pangunahing thread ay ngayon
sinamahan ng thread ID.
Ang mga naka-embed na null na character sa diagnostic ay aktwal na lumalabas. Dati nilang pinutol ang
mensahe sa mga naunang bersyon.
Ang $foo::a at $foo::b ay exempt na ngayon sa mga babala na "possible typo" kung pag-uri-uriin () is
nakatagpo sa package na "foo".
Ang mga hindi nakikilalang alpabetikong escape na naranasan kapag ang pag-parse ng mga quote construct ay bumubuo na ngayon ng a
babala, dahil maaari silang kumuha ng mga bagong semantika sa mga susunod na bersyon ng Perl.
Maraming mga diagnostic ngayon ang nag-uulat ng panloob na operasyon kung saan ang babala ay pinukaw, tulad ng
Sun:
Paggamit ng hindi nasimulang halaga sa pagsasama-sama (.) sa (eval 1) linya 1.
Paggamit ng hindi inisyal na halaga sa pag-print sa (eval 1) linya 1.
Ang mga diagnostic na nagaganap sa loob ng eval ay maaari ding mag-ulat ng file at numero ng linya kung saan ang
eval ay matatagpuan, bilang karagdagan sa eval sequence number at ang line number sa loob ng
nasuri mismo ang teksto. Halimbawa:
Hindi sapat na mga argumento para sa scalar sa (eval 4)[newlib/perl5db.pl:1411] line 2, sa EOF
Diagnostics sundin STDERR
Napupunta na ngayon ang diagnostic output sa alinmang file na itinuturo ng "STDERR" handle, sa halip
ng palaging pagpunta sa pinagbabatayan na C runtime library na "stderr".
pa pare-pareho close-on-exec pag-uugali
Sa mga system na sumusuporta sa isang close-on-exec na flag sa mga filehandles, nakatakda na ang flag para sa alinman
hawakan na nilikha ng tubo(), socketpair(), socket (), at tanggapin (), kung iyon ay ginagarantiyahan ng
ang halaga ng $^F na maaaring may bisa. Ang mga naunang bersyon ay napabayaan na itakda ang bandila para sa
mga handle na ginawa gamit ang mga operator na ito. Tingnan ang "pipe" sa perlfunc, "socketpair" sa perlfunc,
"socket" sa perlfunc, "accept" sa perlfunc, at "$^F" sa perlvar.
syswrite() kadalian ng paggamit
Ang length argument ng "syswrite()" ay naging opsyonal.
Mas mabuti palaugnayan checks on nakakulong hindi nag-iingat operator
Mga expression tulad ng:
tinukoy ang pag-print(&foo,&bar,&baz);
print uc("foo","bar","baz");
undef($foo,&bar);
dating hindi sinasadyang pinapayagan sa mga naunang bersyon, at gumawa ng hindi mahuhulaan na pag-uugali.
Ang ilan ay gumawa ng mga karagdagang babala kapag ginamit sa ganitong paraan; ang iba ay tahimik na gumawa ng mali
bagay.
Tinitiyak na ngayon ng mga nakakulong na anyo ng karamihan sa mga unary operator na umaasa sa isang argumento
na hindi sila tinatawag na may higit sa isang argumento, na ginagawa ang mga kaso na ipinapakita sa itaas na syntax
mga pagkakamali. Ang karaniwang pag-uugali ng:
tinukoy ng pag-print &foo, &bar, &baz;
print uc "foo", "bar", "baz";
undef $foo, &bar;
nananatiling hindi nagbabago. Tingnan ang perlop.
kaunti operator suportahan ganap katutubo kabuuan lapad
Ang mga bit operator (& | ^ ~ << >>) ay gumagana na ngayon sa buong katutubong integral width (ang eksaktong
ang laki nito ay available sa $Config{ivsize}). Halimbawa, kung ang iyong platform ay alinman
katutubong 64-bit o kung ang Perl ay na-configure na gumamit ng 64-bit integer, ang mga operasyong ito
ilapat sa 8 byte (kumpara sa 4 na byte sa 32-bit na mga platform). Para sa portable, siguraduhing
itago ang mga labis na bit sa resulta ng unary "~", hal, "~$x & 0xffffffff".
Pinabuti katiwasayan mga tampok
Ang mas maraming potensyal na hindi ligtas na operasyon ay nabahiran ang kanilang mga resulta para sa pinahusay na seguridad.
Ang mga field na "passwd" at "shell" ay ibinalik ng getpwent(), getpwnam(), at getpwuid() ay
nabahiran na ngayon, dahil maaapektuhan ng user ang kanilang sariling naka-encrypt na password at login shell.
Ang variable ay binago ng shmread(), at mga mensaheng ibinalik ni msgrcv() (at ang object nito-
oriented na interface IPC::SysV::Msg::rcv) ay may bahid din, dahil ang ibang hindi pinagkakatiwalaan
Ang mga proseso ay maaaring magbago ng mga mensahe at nakabahaging mga segment ng memorya para sa kanilang sariling mga kasuklam-suklam na layunin.
pa gumagana walang salita tularan (*)
Ang mga bareword na prototype ay na-rationalize para magamit ang mga ito para i-override ang mga builtin
na tumatanggap ng mga bareword at binibigyang kahulugan ang mga ito sa isang espesyal na paraan, gaya ng "require" o "do".
Ang mga argumentong na-prototype bilang "*" ay makikita na ngayon sa loob ng subroutine bilang alinman sa isang simple
scalar o bilang isang sanggunian sa isang typeglob. Tingnan ang "Mga Prototype" sa perlsub.
"kailangan" at "gawin" maaari be override
Ang mga operasyong "require" at "do 'file'" ay maaaring ma-override nang lokal sa pamamagitan ng pag-import ng mga subroutine ng
ang parehong pangalan sa kasalukuyang package (o sa buong mundo sa pamamagitan ng pag-import ng mga ito sa
CORE::GLOBAL:: namespace). Ang pag-override sa "require" ay makakaapekto rin sa "use", basta ang
Ang override ay makikita sa oras ng pag-compile. Tingnan ang "Overriding Built-in Functions" sa perlsub.
$^X mga variable maaari ngayon mayroon pangalan mas mahaba kaysa isa katangian
Dati, ang $^X ay kasingkahulugan ng ${"\cX"}, ngunit ang $^XY ay isang syntax error. Ngayon variable
ang mga pangalan na nagsisimula sa isang control character ay maaaring basta-basta mahaba. Gayunpaman, para sa
mga dahilan ng pagiging tugma, ang mga variable na ito dapat isulat gamit ang tahasang mga brace, bilang "${^XY}"
Halimbawa. Ang "${^XYZ}" ay kasingkahulugan ng ${"\cXYZ"}. Mga variable na pangalan na may higit sa isa
control character, gaya ng "${^XY^Z}", ay ilegal.
Ang lumang syntax ay hindi nagbago. Gaya ng dati, ang `^X' ay maaaring literal na control-X
character o ang dalawang-character na sequence na `caret' plus `X'. Kapag ang mga braces ay tinanggal, ang
ang variable na pangalan ay hihinto pagkatapos ng control character. Kaya't ang "$^XYZ" ay patuloy na magkasingkahulugan
na may "$^X . "YZ"" gaya ng dati.
Tulad ng dati, ang mga lexical na variable ay maaaring walang mga pangalan na nagsisimula sa mga control character. Bilang
dati, ang mga variable na ang mga pangalan ay nagsisimula sa isang control character ay palaging pinipilit na ipasok
package `pangunahing'. Ang lahat ng naturang mga variable ay nakalaan para sa mga extension sa hinaharap, maliban sa mga iyon
magsimula sa "^_", na maaaring gamitin ng mga program ng user at garantisadong hindi makukuha
espesyal na kahulugan sa anumang hinaharap na bersyon ng Perl.
bago nagbabago $^C Sumasalamin "-c" lumipat
Ang $^C ay may boolean value na sumasalamin kung ang perl ay pinapatakbo sa compile-only mode (ibig sabihin
sa pamamagitan ng "-c" switch). Dahil ang mga BEGIN block ay isinasagawa sa ilalim ng ganitong mga kundisyon, ito
Ang variable ay nagbibigay-daan sa perl code na matukoy kung ang mga aksyon na may katuturan lamang sa panahon ng normal
ang pagtakbo ay ginagarantiyahan. Tingnan ang perlvar.
bago nagbabago $^V naglalaman ng Perl bersyon as a pisi
Ang $^V ay naglalaman ng numero ng bersyon ng Perl bilang isang string na binubuo ng mga character na may mga ordinal
tumugma sa mga numero ng bersyon, ibig sabihin, v5.6.0. Ito ay maaaring gamitin sa mga paghahambing ng string.
Tingnan ang "Suporta para sa mga string na kinakatawan bilang isang vector ng mga ordinal" para sa isang halimbawa.
Opsyonal Y2K babala
Kung ang Perl ay binuo gamit ang cpp macro na "PERL_Y2KWARN" na tinukoy, naglalabas ito ng mga opsyonal na babala
kapag pinagsama ang numero 19 sa isa pang numero.
Ang gawi na ito ay dapat na partikular na pinagana kapag nagpapatakbo ng I-configure. Tingnan mo INSTALL at
README.Y2K.
Mga Arrays ngayon palagi interpolate sa double-quoted string
Sa double-quoted na mga string, ang mga arrays ngayon ay nag-interpolate, kahit na ano. Ang ugali kanina
Ang mga bersyon ng perl 5 ay ang mga arrays ay mag-interpolate sa mga string kung ang array ay naging
nabanggit bago ang string ay pinagsama-sama, at kung hindi, ang Perl ay magtataas ng isang nakamamatay na compile-
error sa oras. Sa mga bersyon 5.000 hanggang 5.003, ang error ay
Nangangailangan na ngayon ng backslash ang literal na @example
Sa mga bersyon 5.004_01 hanggang 5.6.0, ang error ay
Sa string, ang @example ngayon ay dapat na isulat bilang \@example
Ang ideya dito ay upang masanay ang mga tao sa pagsulat ng "fred\@example.com" kapag sila
Gusto ng literal na "@" na senyales, tulad ng palagi nilang isinusulat na "Ibalik sa akin ang aking \$5" kung kailan
gusto nila ng literal na "$" sign.
Simula sa 5.6.1, kapag nakita na ngayon ni Perl ang isang "@" sign sa isang double-quoted string, ito palagi
sinusubukang i-interpolate ang isang array, hindi alintana kung ang array ay ginamit o hindi
ipinahayag na. Ang nakamamatay na error ay ibinaba sa isang opsyonal na babala:
Posibleng hindi sinasadyang interpolation ng @example sa string
Ito ay nagbabala sa iyo na "[protektado ng email]Ang " ay magiging "fred.com" kung hindi mo gagawin
backslash ang "@". Tingnan mo http://perl.plover.com/at-error.html para sa karagdagang detalye tungkol sa
kasaysayan dito.
@- at @+ magbigay simula/pagtatapos natapos of regex posporo
Ang mga bagong magic variable na @- at @+ ay nagbibigay ng panimula at pangwakas na offset, ayon sa pagkakabanggit,
ng $&, $1, $2, atbp. Tingnan ang perlvar para sa mga detalye.
Module at Pragmatiko
Module
mga katangian
Habang panloob na ginagamit ni Perl bilang isang pragma, nagbibigay din ang modyul na ito ng paraan para makuha
subroutine at variable na mga katangian. Tingnan ang mga katangian.
B Ang Perl Compiler suite ay malawakang na-rework para sa release na ito. Higit pa sa
Ang karaniwang Perl test suite ay pumasa kapag pinapatakbo sa ilalim ng Compiler, ngunit mayroon pa ring a
makabuluhang paraan upang makamit ang kalidad ng produksyon na pinagsama-samang mga executable.
TANDAAN: Ang Compiler suite ay nananatiling lubos na eksperimental. Ang
maaaring hindi tama ang nabuong code, kahit na nagawa nitong maisagawa
nang walang mga error.
Benchmark
Sa pangkalahatan, ang mga resulta ng Benchmark ay nagpapakita ng mas mababang average na error at mas mahusay na katumpakan ng timing.
Maaari ka na ngayong magpatakbo ng mga pagsubok para sa n segundo sa halip na hulaan ang tamang bilang ng mga pagsubok
run: hal, ang timethese(-5, ...) ay tatakbo sa bawat code nang hindi bababa sa 5 CPU segundo. Zero bilang
ang "bilang ng mga pag-uulit" ay nangangahulugang "para sa hindi bababa sa 3 segundo ng CPU". Ang format ng output ay may
nagbago din. Halimbawa:
gamitin ang Benchmark;$x=3;timethese(-5,{a=>sub{$x*$x},b=>sub{$x**2}})
maglalabas na ngayon ng ganito:
Benchmark: nagpapatakbo ng a, b, bawat isa nang hindi bababa sa 5 segundo ng CPU...
a: 5 wallclock seg ( 5.77 usr + 0.00 sys = 5.77 CPU) @ 200551.91/s (n=1156516)
b: 4 na wallclock seg ( 5.00 usr + 0.02 sys = 5.02 CPU) @ 159605.18/s (n=800686)
Mga bagong feature: "bawat isa para sa hindi bababa sa N CPU segundo...", "wallclock secs", at ang "@
operations/CPU second (n=operations)".
timethese() ngayon ay nagbabalik ng reference sa isang hash ng mga Benchmark na bagay na naglalaman ng pagsubok
mga resulta, na naka-key sa mga pangalan ng mga pagsubok.
timethis() ibinabalik ngayon ang field ng mga pag-ulit sa object ng resulta ng Benchmark sa halip na
0.
timethese(), timethis(), at ang bago cmptese() (tingnan sa ibaba) ay maaari ding kumuha ng format
specifier ng 'wala' upang sugpuin ang output.
Isang bagong function bilangin() ay tulad ng timeit() maliban na ito ay tumatagal ng isang ORAS sa halip na
isang COUNT.
Isang bagong function cmptese() nagpi-print ng tsart na naghahambing ng mga resulta ng bawat pagsubok na ibinalik
mula sa isang timethese() tawag. Para sa bawat posibleng pares ng mga pagsubok, ang porsyento ng bilis
ang pagkakaiba (iters/sec o segundo/iter) ay ipinapakita.
Para sa iba pang mga detalye, tingnan ang Benchmark.
ByteLoader
Ang ByteLoader ay isang dedikadong extension para bumuo at magpatakbo ng Perl bytecode. Tingnan mo
ByteLoader.
patuloy
Magagamit na ang mga sanggunian.
Ang bagong bersyon ay nagbibigay-daan din sa isang nangungunang underscore sa mga pare-parehong pangalan, ngunit hindi pinapayagan ang a
double leading underscore (tulad ng sa "__LINE__"). Ang ilang iba pang mga pangalan ay hindi pinapayagan o
binalaan laban, kabilang ang BEGIN, END, atbp. Ang ilang mga pangalan na pinilit na maging pangunahing::
ginamit upang mabigo nang tahimik sa ilang mga kaso; ngayon sila ay nakamamatay (sa labas ng pangunahing:) at isang
opsyonal na babala (sa loob ng pangunahing::). Ang kakayahang makita kung ang isang pare-pareho ay nagkaroon
nai-set na may ibinigay na pangalan ay naidagdag.
Tingnan ang pare-pareho.
mga anting-anting
Ang pragma na ito ay nagpapatupad ng "\N" string escape. Tingnan ang mga anting-anting.
Data::Dumper
Maaaring tukuyin ang isang setting na "Maxdepth" upang maiwasan ang masyadong malalim na pakikipagsapalaran sa malalim na data
mga istruktura. Tingnan ang Data::Dumper.
Ang pagpapatupad ng XSUB ng Dump() ay awtomatikong tinatawag na ngayon kung ang "Useqq" na setting
ay hindi ginagamit.
Gumagana nang tama ang paglalaglag ng mga bagay na "qr//".
Ang DB "DB" ay isang pang-eksperimentong module na naglalantad ng malinis na abstraction sa pag-debug ng Perl
API.
DB_File
Ang DB_File ay maaari na ngayong itayo gamit ang Berkeley DB na bersyon 1, 2 o 3. Tingnan
"ext/DB_File/Mga Pagbabago".
Devel::DPof
Devel::DProf, isang Perl source code profiler ay naidagdag. Tingnan ang Devel::DPof at
dprofpp.
Devel::Silip
Ang Devel::Peek module ay nagbibigay ng access sa panloob na representasyon ng Perl
mga variable at data. Ito ay isang tool sa pag-debug ng data para sa XS programmer.
Dumpvalue
Ang Dumpvalue module ay nagbibigay ng mga screen dump ng Perl data.
DynaLoader
Sinusuportahan na ngayon ng DynaLoader ang isang dl_unload_file() function sa mga platform na sumusuporta
pagbabawas ng mga nakabahaging bagay gamit ang dclose().
Maaari ding opsyonal na ayusin ng Perl na i-unload ang lahat ng extension na nakabahaging object na ni-load ni
Perl. Upang paganahin ito, bumuo ng Perl gamit ang opsyong I-configure
"-Accflags=-DDL_UNLOAD_ALL_AT_EXIT". (Maaaring kapaki-pakinabang ito kung gumagamit ka ng Apache na may
mod_perl.)
Ingles
Ang $PERL_VERSION ay nangangahulugang $^V (isang string value) sa halip na $] (isang numeric
halaga).
Sinusuportahan na ngayon ng Env Env ang pag-access sa mga variable ng kapaligiran tulad ng PATH bilang mga variable ng array.
Fcntl
Higit pang mga Fcntl constant ang idinagdag: F_SETLK64, F_SETLKW64, O_LARGEFILE para sa malaking file (higit pa
kaysa sa 4GB) na access (TANDAAN: ang O_LARGEFILE ay awtomatikong idinaragdag sa sysopen() mga bandila kung
malaking file support ay na-configure, tulad ng default), Free/Net/OpenBSD locking
mga flag ng pag-uugali F_FLOCK, F_POSIX, Linux F_SHLCK, at O_ACCMODE: ang pinagsamang maskara ng
O_RDONLY, O_WRONLY, at O_RDWR. Ang Humanap()/sysseek() mga constant SEEK_SET, SEEK_CUR,
at SEEK_END ay available sa pamamagitan ng ":seek" na tag. Ang chmod()/stat () S_IF* mga pare-pareho
at S_IS* function ay available sa pamamagitan ng ":mode" na tag.
File::Ihambing
A compare_text() Naidagdag ang function, na nagbibigay-daan sa mga custom na function ng paghahambing.
Tingnan ang File::Ihambing.
File::Hanapin
File::Find now ay gumagana nang tama kapag ang gusto() Ang function ay alinman sa autoloaded o ay a
simbolikong sanggunian.
Isang bug na nagdulot ng File::Find to lose track of the working directory when pruning top-
Ang mga direktoryo ng antas ay naayos na.
Sinusuportahan din ng File::Find now ang ilang iba pang mga opsyon para makontrol ang pag-uugali nito. Maaari itong
sundin ang mga simbolikong link kung ang "follow" na opsyon ay tinukoy. Paganahin ang "no_chdir"
gagawing pagpipilian ang File::Find skip na binabago ang kasalukuyang direktoryo kapag naglalakad
mga direktoryo. Maaaring maging kapaki-pakinabang ang flag na "untaint" kapag tumatakbo nang naka-enable ang mga taint check.
Tingnan ang File::Hanapin.
File::Glob
Ang extension na ito ay nagpapatupad ng BSD-style na file globbing. Bilang default, gagamitin din ito
para sa panloob na pagpapatupad ng glob() operator. Tingnan ang File::Glob.
File::Spec
Ang mga bagong pamamaraan ay naidagdag sa File::Spec module: devnull() ibinabalik ang pangalan ng
ang null device (/dev/null sa Unix) at tmpdir() ang pangalan ng temp directory
(karaniwan / Tmp sa Unix). Mayroon na ngayong mga paraan upang mag-convert sa pagitan ng absolute at
mga kamag-anak na filename: abs2rel() at rel2abs(). Para sa pagiging tugma sa mga operating system
na tumutukoy sa mga pangalan ng volume sa mga path ng file, ang splitpath(), splitdir(), at catdir()
Ang mga pamamaraan ay idinagdag.
File::Spec::Functions
Ang bagong File::Spec::Functions modules ay nagbibigay ng function interface sa File::Spec
modyul. Pinapayagan ang shorthand
$buong pangalan = catfile ($dir1, $dir2, $file);
sa halip ng
$fullname = File::Spec->catfile($dir1, $dir2, $file);
Getopt:: Mahaba
Getopt::Nabago ang mahabang paglilisensya upang payagan ang Perl Artistic License gayundin ang
GPL. Dati itong GPL lang, na humahadlang sa mga non-GPL na application na gusto
para gamitin ang Getopt::Long.
Hinihikayat ng Getopt::Long ang paggamit ng Pod::Usage upang makagawa ng mga mensahe ng tulong. Halimbawa:
gamitin ang Getopt::Long;
gumamit ng Pod::Usage;
aking $man = 0;
ang aking $help = 0;
GetOptions('help|?' => \$help, man => \$man) o pod2usage(2);
pod2usage(1) kung $help;
pod2usage(-exitstatus => 0, -verbose => 2) kung $man;
__END__
=head1 PANGALAN
sample - Gamit ang Getopt::Long at Pod::Usage
=head1 SYNOPSIS
sample [mga opsyon] [file ...]
Pagpipilian:
-help maikling mensahe ng tulong
-man buong dokumentasyon
=head1 MGA OPSYON
=higit sa 8
=item B<-help>
Mag-print ng maikling mensahe ng tulong at paglabas.
=item B<-tao>
Ini-print ang manu-manong pahina at lalabas.
= likod
=head1 DESCRIPTION
B babasahin ang ibinigay na (mga) file ng input at gagawa ng isang bagay
kapaki-pakinabang sa mga nilalaman nito.
= gupitin
Tingnan ang Pod::Paggamit para sa mga detalye.
Isang bug na pumigil sa hindi opsyong call-back <> na matukoy bilang una
naayos na ang argumento.
Upang tukuyin ang mga character na < at > bilang mga starter ng opsyon, gamitin ang ><. Tandaan, gayunpaman, iyon
ang pagpapalit ng mga starter ng opsyon ay mahigpit na hindi na ginagamit.
IO sumulat () at syswrite() ay tatanggap na ngayon ng isang single-argument form ng tawag, para sa
pagkakapare-pareho sa Perl's syswrite().
Maaari ka na ngayong lumikha ng TCP-based na IO::Socket::INET nang hindi pinipilit ang pagtatangkang kumonekta.
Binibigyang-daan ka nitong i-configure ang mga opsyon nito (tulad ng hindi pag-block nito) at pagkatapos ay tumawag
ikonekta () mano-mano.
Isang bug na pumigil sa IO::Socket::protocol() accessor mula sa pagbabalik ng
ang tamang halaga ay naitama.
Ang IO::Socket::connect ay gumagamit na ngayon ng hindi naka-block na IO sa halip na alarm() para kumonekta
mga timeout.
IO::Socket::accept now gamit piliin() sa halip ng alarm() para sa paggawa ng mga timeout.
IO::Socket::INET->new now sets $! tama sa kabiguan. Nakatakda pa rin ang $@ para sa paatras
compatibility.
Ang JPL Java Perl Lingo ay ipinamamahagi na ngayon sa Perl. Tingnan ang jpl/README para sa higit pang impormasyon.
lib "use lib" na ngayon ay nag-aalis ng anumang sumusunod na mga duplicate na entry. Tinatanggal ng "no lib" ang lahat ng pinangalanan
mga entry.
Math::BigInt
Ang mga bitwise na operasyon na "<<", ">>", "&", "|", at "~" ay sinusuportahan na ngayon sa bigints.
Math:: Kumplikado
Ang mga paraan ng accessor na Re, Im, arg, abs, rho, at theta ay maaari na ring kumilos bilang mga mutator
(accessor $z->Re(), mutator $z->Re(3)).
Ang pamamaraan ng klase na "display_format" at ang kaukulang pamamaraan ng object
"display_format", bilang karagdagan sa pagtanggap lamang ng isang argumento, maaari na ngayong tumanggap ng a
parameter hash. Ang mga kinikilalang key ng isang parameter hash ay "style", na tumutugma sa
ang lumang isang parameter case, at dalawang bagong parameter: "format", na isang
printf()-style format string (karaniwang naka-default sa "%.15g", maaari kang bumalik sa
default sa pamamagitan ng pagtatakda ng format na string sa "undef") na ginagamit para sa parehong bahagi ng isang complex
numero, at "polar_pretty_print" (default sa true), na kumokontrol kung isang pagtatangka
ay ginawa upang subukang kilalanin ang maliliit na multiple at rationals ng pi (2pi, pi/2) sa
argumento (anggulo) ng isang polar complex number.
Ang potensyal na nakakagambalang pagbabago ay nasa konteksto ng listahan ang parehong mga pamamaraan ngayon pagbabalik ang
parametro sumira, sa halip na ang value lang ng parameter na "style".
Math::Trig
Isang maliit na radial trigonometry (cylindrical at spherical), radial coordinate
conversion, at idinagdag ang malaking distansya ng bilog.
Pod::Parser, Pod::InputObjects
Ang Pod::Parser ay isang batayang klase para sa pag-parse at pagpili ng mga seksyon ng dokumentasyon ng pod
mula sa isang input stream. Ang module na ito ay nangangalaga sa pagtukoy ng mga pod paragraph at
mga utos sa input at ibibigay ang mga na-parse na talata at mga utos sa tinukoy ng gumagamit
mga pamamaraan na malayang bigyang-kahulugan o isalin ang mga ito ayon sa nakikita nilang angkop.
Tinutukoy ng Pod::InputObjects ang ilang input object na kailangan ng Pod::Parser, at para sa advanced
mga user ng Pod::Parser na nangangailangan ng higit pa tungkol sa isang command bukod sa pangalan at text nito.
Sa paglabas ng 5.6.0 ng Perl, ang Pod::Parser ay ngayon ang opisyal na pinahintulutan na "base parser
code" na inirerekomenda para sa paggamit ng lahat ng mga tagasalin ng pod2xxx. Pod::Text (pod2text) at
Pod::Man (pod2man) ay na-convert na upang gamitin ang Pod::Parser at mga pagsisikap na
convert Pod::HTML (pod2html) ay isinasagawa na. Para sa anumang mga katanungan o komento
tungkol sa pod parsing at pagsasalin ng mga isyu at utility, mangyaring gamitin ang
[protektado ng email] listahan ng pag-mail.
Para sa karagdagang impormasyon, pakitingnan ang Pod::Parser at Pod::InputObjects.
Pod:: Checker, podchecker
Sinusuri ng utility na ito ang mga pod file para sa tamang syntax, ayon sa perlpod. Obvious naman
ang mga error ay na-flag nang ganoon, habang ang mga babala ay naka-print para sa mga pagkakamali na maaaring mangyari
hawakan nang maayos. Hindi pa kumpleto ang checklist. Tingnan ang Pod::Checker.
Pod::ParseUtils, Pod::Find
Ang mga module na ito ay nagbibigay ng isang hanay ng mga gizmos na pangunahing kapaki-pakinabang para sa mga tagasalin ng pod.
Pod::Hanapin ang mga istruktura ng direktoryo ng traverses at ibalik ang mga nakitang pod file, kasama ng mga ito
mga canonical na pangalan (tulad ng "File::Spec::Unix"). Ang Pod::ParseUtils ay naglalaman ng Pod::Listahan (kapaki-pakinabang
para sa pag-iimbak ng impormasyon sa listahan ng pod), Pod::Hyperlink (para sa pag-parse ng mga nilalaman ng "L<>"
pagkakasunud-sunod) at Pod::Cache (para sa pag-cache ng impormasyon tungkol sa mga pod file, hal, mga link node).
Pod:: Pumili, podselect
Ang Pod::Select ay isang subclass ng Pod::Parser na nagbibigay ng function na pinangalanang "podselect()"
upang i-filter ang mga seksyon na tinukoy ng user ng raw pod na dokumentasyon mula sa isang input stream.
Ang podselect ay isang script na nagbibigay ng access sa Pod::Select mula sa iba pang mga script upang maging
ginamit bilang isang filter. Tingnan ang Pod::Piliin.
Pod::Usage, pod2usage
Pod::Ang paggamit ay nagbibigay ng function na "pod2usage()" upang mag-print ng mga mensahe ng paggamit para sa isang Perl
script batay sa naka-embed na dokumentasyon ng pod nito. Ang pod2usage() function ay pangkalahatan
kapaki-pakinabang sa lahat ng mga may-akda ng script dahil hinahayaan silang magsulat at magpanatili ng iisang pinagmulan
(ang mga pod) para sa dokumentasyon, kaya inaalis ang pangangailangang gumawa at magpanatili ng kalabisan
paggamit ng text message na binubuo ng impormasyon na nasa mga pod.
Mayroon ding pod2usage script na maaaring gamitin mula sa iba pang uri ng mga script hanggang
mag-print ng mga mensahe ng paggamit mula sa mga pod (kahit para sa mga hindi Perl na script na may mga pod na naka-embed sa
komento).
Para sa mga detalye at halimbawa, pakitingnan ang Pod::Usage.
Pod::Text at Pod::Man
Pod::Isinulat muli ang teksto upang magamit ang Pod::Parser. Habang pod2text() ay magagamit pa rin
para sa backwards compatibility, ang module ay mayroon na ngayong bagong gustong interface. Tingnan mo
Pod::I-text para sa mga detalye. Ang bagong Pod::Text module ay madaling i-subclass para sa mga tweak
sa output, at dalawang ganoong subclass (Pod::Text::Termcap para sa man-page-style na bold at
salungguhit gamit ang termcap information, at Pod::Text::Color para sa markup na may ANSI color
sequences) ay pamantayan na ngayon.
Ang pod2man ay ginawang isang module, Pod::Man, na gumagamit din ng Pod::Parser. Nasa
proseso, ilang natitirang mga bug na nauugnay sa mga panipi sa mga header ng seksyon, pagsipi ng
code escapes, at mga nested list ay naayos na. Ang pod2man ay isa na ngayong wrapper script
sa paligid ng modyul na ito.
SDBM_File
Ang isang EXISTS na paraan ay idinagdag sa modyul na ito (at sdbm_exists() ay naidagdag sa
ang pinagbabatayan ng sdbm library), kaya ang isa ay maaari na ngayong tumawag sa isang SDBM_File na nakatali na hash at
makuha ang tamang resulta, sa halip na isang error sa runtime.
Isang bug na maaaring nagdulot ng pagkawala ng data kapag higit sa isang disk block ang nangyaring nabasa
mula sa database sa isang solong FETCH() ay naayos na.
Sys::Syslog
Sys::Syslog ngayon ay gumagamit ng mga XSUB upang ma-access ang mga pasilidad mula sa syslog.h kaya hindi na ito nangangailangan
syslog.ph na umiral.
Sys::Hostname
Sys::Gumagamit na ngayon ang Hostname ng mga XSUB para tawagan ang mga C library gethostname() or uname() kung sila
umiiral.
Termino::ANSIColor
Term::ANSIColor ay isang napakasimpleng module upang magbigay ng madali at nababasang access sa
Kulay ng ANSI at pag-highlight ng mga pagkakasunud-sunod ng pagtakas, na sinusuportahan ng karamihan sa terminal ng ANSI
mga emulator. Kasama na ito ngayon sa pamantayan.
Oras::Lokal
Ang timelocal() at timegm() mga function na ginagamit upang tahimik na ibalik ang mga huwad na resulta kapag ang
nahulog ang petsa sa labas ng integer range ng makina. Consistent na sila ngayon croak() kung ang
nahuhulog ang petsa sa isang hindi sinusuportahang hanay.
Win32
Ang halaga ng pagbabalik ng error sa konteksto ng listahan ay binago para sa lahat ng mga function na bumalik
isang listahan ng mga halaga. Dati ang mga function na ito ay nagbalik ng isang listahan na may isang elemento
"undef" kung may naganap na error. Ngayon ibinabalik ng mga function na ito ang walang laman na listahan sa mga ito
mga sitwasyon. Nalalapat ito sa mga sumusunod na function:
Win32::FsType
Win32::GetOSVersion
Ang natitirang mga function ay hindi nagbabago at patuloy na nagbabalik ng "undef" sa error kahit na sa
listahan ng konteksto.
Ang Win32::SetLastError(ERROR) function ay idinagdag bilang pandagdag sa
Win32::GetLastError() function.
Ang bagong Win32::GetFullPathName(FILENAME) ay nagbabalik ng buong ganap na pathname para sa
FILENAME sa scalar na konteksto. Sa konteksto ng listahan, nagbabalik ito ng dalawang-element na listahan na naglalaman ng
ang ganap na kwalipikadong pangalan ng direktoryo at ang filename. Tingnan ang Win32.
XSLoader
Ang extension ng XSLoader ay isang mas simpleng alternatibo sa DynaLoader. Tingnan ang XSLoader.
Mga Filter ng DBM
Ang isang bagong tampok na tinatawag na "Mga Filter ng DBM" ay idinagdag sa lahat ng mga module ng DBM--DB_File,
GDBM_File, NDBM_File, ODBM_File, at SDBM_File. Ang mga Filter ng DBM ay nagdaragdag ng apat na bagong pamamaraan sa
bawat DBM module:
filter_store_key
filter_store_value
filter_fetch_key
filter_fetch_value
Magagamit ang mga ito upang i-filter ang mga pares ng key-value bago isulat ang mga pares sa
database o pagkatapos lamang na basahin ang mga ito mula sa database. Tingnan ang perldbmfilter para sa karagdagang
impormasyon.
Pragmatiko
Ang "use attrs" ay hindi na ginagamit, at ibinibigay lamang para sa backward-compatibility. Ito ay naging
pinalitan ng "sub : attributes" syntax. Tingnan ang "Mga Subroutine na Katangian" sa perlsub at
mga katangian
Lexical na babala pragma, "gumamit ng mga babala;", upang kontrolin ang mga opsyonal na babala. Tingnan ang perllexwarn.
"gumamit ng filetest" upang kontrolin ang pag-uugali ng mga filetest ("-r" "-w" ...). Sa kasalukuyan ay isa lamang
ipinatupad ang subpragma, "use filetest 'access';", na gumagamit daan(2) o katumbas ng
suriin ang mga pahintulot sa halip na gamitin stat(2) gaya ng dati. Mahalaga ito sa mga filesystem kung saan
may mga ACL (mga listahan ng access control): ang stat(2) maaaring magsinungaling, ngunit daan(2) mas nakakaalam.
Ang "bukas" na pragma ay maaaring gamitin upang tukuyin ang mga default na disiplina para sa mga tagabuo ng hawakan (hal
bukas()) at para sa qx//. Ang dalawang pseudo-disciplines na ":raw" at ":crlf" ay kasalukuyang
suportado sa DOS-derivative platform (ibig sabihin, kung saan ang binmode ay hindi isang no-op). Tingnan din
"binmode() ay maaaring gamitin upang itakda ang :crlf at :raw mode".
Gamit Mga Pagbabago
dprofpp
Ang "dprofpp" ay ginagamit upang ipakita ang data ng profile na nabuo gamit ang "Devel::DProf". Tingnan ang dprofpp.
find2perl
Ginagamit na ngayon ng "find2perl" na utility ang mga pinahusay na feature ng File::Find module. Ang
-depth at -follow na mga opsyon ay suportado. Ang dokumentasyon ng pod ay kasama rin sa
script.
h2xs
Ang tool na "h2xs" ay maaari na ngayong gumana kasabay ng "C::Scan" (available mula sa CPAN) hanggang
awtomatikong i-parse ang totoong buhay na mga file ng header. Ang "-M", "-a", "-k", at "-o" na mga opsyon ay
bagong.
perlcc
Sinusuportahan na ngayon ng "perlcc" ang mga backend ng C at Bytecode. Bilang default, bumubuo ito ng output mula sa
ang simpleng C backend kaysa sa na-optimize na C backend.
Ang suporta para sa mga platform na hindi Unix ay napabuti.
perldoc
Ang "perldoc" ay muling ginawa upang maiwasan ang mga posibleng butas sa seguridad. Ito ay hindi sa pamamagitan ng default na hayaan
mismo ay tatakbo bilang superuser, ngunit maaari mo pa ring gamitin ang -U lumipat upang subukang ibagsak ito
mga pribilehiyo muna.
Ang Perl Debugger
Maraming mga pag-aayos ng bug at pagpapahusay ang idinagdag sa perl5db.pl, ang Perl debugger. Ang tulong
ang dokumentasyon ay muling inayos. Kasama sa mga bagong command ang "< ?", "> ?", at "{ ?" para ilista
kasalukuyang mga aksyon, "tao docpage" upang patakbuhin ang iyong doc viewer sa ilang perl docset, at suporta para sa
naka-quote na mga opsyon. Ang impormasyon ng tulong ay muling inayos, at dapat makitang muli kung
ginagamit mo kulang bilang iyong pager. Isang seryosong butas sa seguridad ang nasaksak--dapat mo
agad na alisin ang lahat ng mas lumang bersyon ng Perl debugger gaya ng naka-install sa nauna
naglalabas, pabalik sa perl3, mula sa iyong system upang maiwasang makagat nito.
Pinabuti dokumentasyon
Marami sa mga file na README na partikular sa platform ay bahagi na ngayon ng pag-install ng perl. Tingnan mo
perl para sa kumpletong listahan.
perlapi.pod
Ang opisyal na listahan ng mga pampublikong Perl API function.
perlboot.pod
Isang tutorial para sa mga nagsisimula sa object-oriented Perl.
perlcompile.pod
Isang panimula sa paggamit ng Perl Compiler suite.
perldbmfilter.pod
Isang howto document sa paggamit ng DBM filter facility.
perldebug.pod
Lahat ng materyal na walang kaugnayan sa pagpapatakbo ng Perl debugger, kasama ang lahat ng mababang antas ng lakas ng loob
Ang mga detalye na nanganganib na durugin ang kaswal na gumagamit ng debugger, ay inilipat mula sa
ang lumang manpage sa susunod na entry sa ibaba.
perldebguts.pod
Ang bagong manpage na ito ay naglalaman ng labis na mababang antas ng materyal na hindi nauugnay sa Perl
debugger, ngunit bahagyang nauugnay sa pag-debug mismo ng Perl. Naglalaman din ito ng ilang arcane
mga panloob na detalye kung paano gumagana ang proseso ng pag-debug na maaaring interesado lang
mga developer ng Perl debuggers.
perlfork.pod
Mga tala sa tinidor () emulation na kasalukuyang magagamit para sa Windows platform.
perlfilter.pod
Isang panimula sa pagsulat ng Perl source filters.
perlhack.pod
Ilang mga alituntunin para sa pag-hack ng Perl source code.
perlintern.pod
Isang listahan ng mga panloob na function sa Perl source code. (Kasalukuyang walang laman ang listahan.)
perllexwarn.pod
Panimula at sangguniang impormasyon tungkol sa mga kategorya ng babala na saklaw ng leksikal.
perlnumber.pod
Detalyadong impormasyon tungkol sa mga numero habang kinakatawan ang mga ito sa Perl.
perlopentut.pod
Isang tutorial sa paggamit bukas() epektibo.
perlreftut.pod
Isang tutorial na nagpapakilala sa mga mahahalaga ng mga sanggunian.
perltootc.pod
Isang tutorial sa pamamahala ng data ng klase para sa mga module ng object.
perltodo.pod
Pagtalakay sa mga pinaka-madalas na gustong feature na maaaring masuportahan sa Perl balang araw.
perlunicode.pod
Isang panimula sa mga feature ng suporta ng Unicode sa Perl.
pagganap pagpapahusay
Simple pag-uri-uriin () paggamit { $a <=> $b } at ang gaya ng ay optimized
Maraming mga karaniwang pag-uri-uriin () ang mga operasyon gamit ang isang simpleng inlined block ay na-optimize na ngayon para sa mas mabilis
pagganap.
Na-optimize mga takdang-aralin sa leksikal mga variable
Ang ilang partikular na operasyon sa RHS ng mga pahayag ng pagtatalaga ay na-optimize upang direktang itakda
ang lexical variable sa LHS, na nag-aalis ng mga overhead sa pagkopya.
Mas mabilis subroutine tawag
Ang mga maliliit na pagbabago sa kung paano pinangangasiwaan ang mga subroutine na tawag sa loob ay nagbibigay ng mga marginal na pagpapabuti
sa pagganap.
tanggalin (), bawat(), halaga () at sumira pag-iiba ay mas mabilis
Ang mga halaga ng hash ay ibinalik ni tanggalin (), bawat(), halaga () at ang mga hash sa isang konteksto ng listahan ay
ang aktwal na mga halaga sa hash, sa halip na mga kopya. Nagreresulta ito sa makabuluhang mas mahusay
pagganap, dahil inaalis nito ang hindi kailangang pagkopya sa karamihan ng mga sitwasyon.
instalasyon at Configuration Pagpapabuti
-Mga Dusethread paraan isang bagay iba
Ang -Dusethreads flag ay nagbibigay-daan na ngayon sa pang-eksperimentong interpreter-based na suporta sa thread ni
default. Upang makuha ang lasa ng mga pang-eksperimentong thread na nasa 5.005 sa halip, kailangan mo
patakbuhin ang I-configure gamit ang "-Dusethreads -Duse5005threads".
Mula sa v5.6.0, ang suporta sa mga interpreter-thread ay kulang pa rin ng paraan upang lumikha ng mga bagong thread
mula sa Perl (ibig sabihin, "gamitin ang Thread;" ay hindi gagana sa mga thread ng interpreter). "gamitin ang Thread;"
patuloy na magiging available kapag tinukoy mo ang -Duse5005threads na opsyon para I-configure, mga bug
at lahat.
TANDAAN: Ang suporta para sa mga thread ay patuloy na isang pang-eksperimentong tampok.
Ang mga interface at pagpapatupad ay napapailalim sa biglaang at matinding pagbabago.
bago I-configure ang flag
Ang mga sumusunod na bagong flag ay maaaring paganahin sa Configure command line sa pamamagitan ng pagpapatakbo ng Configure
na may "-Dflag".
gumamit ng maramihan
usethreads useithreads (mga bagong interpreter thread: wala pang Perl API)
usethreads ay gumagamit ng5005threads (mga thread tulad ng dati nilang 5.005)
use64bitint (katumbas ng hindi na ginagamit ngayon na 'use64bits')
gumamit ng64bitall
uselongdouble
gumamit ng higit pang mga bit
uselargefiles
usesocks (SOCKS v5 lang ang sinusuportahan)
Pagka-threaded at 64-bitness ngayon mas marami pang walang takot
Ang mga opsyon sa I-configure na nagpapagana sa paggamit ng mga thread at paggamit ng 64-bitness ay mas marami na ngayon
matapang sa diwa na wala na silang tahasang listahan ng mga operating system na kilala
mga thread/64-bit na kakayahan. Sa madaling salita: kung ang iyong operating system ay may kinakailangan
Mga API at datatypes, dapat ay magagawa mo lang na magpatuloy at gamitin ang mga ito, para sa mga thread sa pamamagitan ng
I-configure ang -Dusethreads, at para sa 64 bits alinman sa tahasan sa pamamagitan ng Configure -Duse64bitint o
implicitly kung ang iyong system ay may 64-bit wide datatypes. Tingnan din ang "64-bit na suporta".
Mahaba Doubles
Ang ilang mga platform ay may "mahabang doble", mga numero ng floating point na mas malaki pa kaysa sa saklaw
ordinaryong "doble". Upang paganahin ang paggamit ng mahabang doubles para sa Perl's scalars, gamitin ang -Duselongdouble.
-Dusemorebits
Maaari mong paganahin ang parehong -Duse64bitint at -Duselongdouble sa -Dusemorebits. Tingnan din
"64-bit na suporta".
-Duselargefiles
Sinusuportahan ng ilang platform ang mga system API na may kakayahang pangasiwaan ang malalaking file (karaniwan,
mga file na mas malaki sa dalawang gigabytes). Susubukan ni Perl na gamitin ang mga API na ito kung hihilingin mo
-Duselargefiles.
Tingnan ang "Suporta sa malaking file" para sa higit pang impormasyon.
installusrbinperl
Maaari mong gamitin ang "I-configure -Uinstallusrbinperl" na nagiging sanhi ng paglaktaw ng installperl sa pag-install
perl din bilang /usr/bin/perl. Ito ay kapaki-pakinabang kung mas gusto mong huwag baguhin / usr / bin para sa ilang
dahilan o iba pa ngunit nakakapinsala dahil ipinapalagay ng maraming script na mahanap ang Perl sa /usr/bin/perl.
Medyas suportahan
Maaari mong gamitin ang "Configure -Dusesocks" na nagiging sanhi ng Perl na mag-probe para sa SOCKS proxy protocol
library (v5, hindi v4). Para sa karagdagang impormasyon sa SOCKS, tingnan ang:
http://www.socks.nec.com/
"-A" bandila
Maaari mong "i-post-edit" ang mga variable na I-configure gamit ang switch na I-configure ang "-A". Ang pag-edit
nangyayari kaagad pagkatapos maproseso ang mga file ng partikular na pahiwatig sa platform ngunit bago
magsisimula ang aktwal na proseso ng pagsasaayos. Patakbuhin ang "Configure -h" para malaman ang buong "-A"
Syntax.
Pinahusay na instalasyon Direktoryo
Ang istraktura ng pag-install ay pinayaman upang mapabuti ang suporta para sa pagpapanatili
maramihang bersyon ng perl, upang magbigay ng mga lokasyon para sa mga module, script, at ibinibigay ng vendor
manpages, at para mapagaan ang pagpapanatili ng mga lokal na idinagdag na module, script, at manpage. Tingnan mo
ang seksyon sa Mga Direktoryo ng Pag-install sa INSTALL na file para sa kumpletong mga detalye. Para sa
karamihan sa mga gumagamit ay nagtatayo at nag-i-install mula sa pinagmulan, dapat na maayos ang mga default.
Kung dati mong ginamit ang "I-configure ang -Dsitelib" o "-Dsitearch" upang magtakda ng mga espesyal na halaga para sa
mga direktoryo ng library, maaari mong isaalang-alang ang paggamit ng bagong setting na "-Dsiteprefix".
sa halip. Gayundin, kung nais mong muling gumamit ng config.sh file mula sa mas naunang bersyon ng perl,
dapat mong tiyaking suriin na ang Configure ay gumagawa ng mga makabuluhang pagpipilian para sa mga bagong direktoryo.
Tingnan ang INSTALL para sa kumpletong detalye.
Platform tiyak mga pagbabago
Suportadong platform
· Ang Mach CThreads (NEXTSTEP, OPENSTEP) ay sinusuportahan na ngayon ng Thread extension.
· Sinusuportahan na ngayon ang GNU/Hurd.
· Sinusuportahan na ngayon ang Rhapsody/Darwin.
· Sinusuportahan na ngayon ang EPOC (sa Psion 5).
· Ang cygwin port (dating cygwin32) ay lubos na napabuti.
DOS
· Gumagana na ngayon ang Perl sa djgpp 2.02 (at 2.03 alpha).
· Ang mga pangalan ng variable ng kapaligiran ay hindi na kino-convert sa malalaking titik.
· Ang mga maling exit code mula sa mga backtick ay naayos na.
· Ang port na ito ay patuloy na gumagamit ng sarili nitong builtin na globbing (hindi File::Glob).
OS390 (OpenEdition MVS)
Ang suporta para sa EBCDIC platform na ito ay hindi na-renew sa release na ito. meron
kahirapan sa pag-reconcile sa standardisasyon ni Perl sa UTF-8 bilang panloob na representasyon nito
para sa mga character na may EBCDIC character set, dahil hindi magkatugma ang dalawa.
Hindi malinaw kung ang mga susunod na bersyon ay magre-renew ng suporta para sa platform na ito, ngunit ang
may posibilidad.
VMS
Maraming rebisyon at extension sa configuration, build, testing, at installation
proseso upang mapaunlakan ang mga pangunahing pagbabago at mga opsyon na partikular sa VMS.
Palawakin ang %ENV-handling code upang payagan ang runtime na pagmamapa sa mga lohikal na pangalan, mga simbolo ng CLI, at CRTL
hanay ng kapaligiran.
Extension ng subprocess invocation code para tanggapin ang filespecs bilang command na "verbs".
Idagdag sa pagpoproseso ng command line ng Perl ang kakayahang gumamit ng mga default na uri ng file at makilala
Unix-style na "2>&1".
Pagpapalawak ng File::Spec::VMS routines, at pagsasama sa ExtUtils::MM_VMS.
Extension ng ExtUtils::MM_VMS upang pangasiwaan ang mga kumplikadong extension nang mas flexible.
Ang mga bareword sa simula ng Unix-syntax path ay maaaring ituring bilang text sa halip na lohikal lamang
mga pangalan.
Opsyonal na secure na pagsasalin ng ilang mga lohikal na pangalan na ginagamit sa loob ng Perl.
Iba't ibang pag-aayos ng bug at pag-port ng bagong core code sa VMS.
Ang pasasalamat ay malugod na ipinaabot sa maraming tao na nag-ambag ng mga patch ng VMS, pagsubok,
at mga ideya.
Win32
Maaari na ngayong tularan ni Perl tinidor () panloob, gamit ang maraming interpreter na tumatakbo sa iba't ibang paraan
magkasabay na mga thread. Ang suportang ito ay dapat na pinagana sa oras ng pagbuo. Tingnan ang perlfork para sa
Detalyadong impormasyon.
Kapag binigyan ng pathname na binubuo lang ng drivename, gaya ng "A:", opendir() at
stat () ngayon gamitin ang kasalukuyang gumaganang direktoryo para sa drive sa halip na ang drive root.
Nakadokumento ang builtin na XSUB function sa Win32:: namespace. Tingnan ang Win32.
Ang $^X ay naglalaman na ngayon ng buong pangalan ng path ng tumatakbong executable.
A Win32::GetLongPathName() function ay ibinigay upang umakma Win32::GetFullPathName() at
Win32::GetShortPathName(). Tingnan ang Win32.
POSIX::uname() ay suportado.
system(1,...) ngayon ay nagbabalik ng mga tunay na ID ng proseso sa halip na mga hawakan ng proseso. pumatay() tumatanggap
anumang tunay na proseso id, sa halip na mahigpit na ibalik ang mga halaga mula sa system(1,...).
Para sa mas mahusay na pagkakatugma sa Unix, ang "kill(0, $pid)" ay maaari na ngayong gamitin upang subukan kung a
umiiral ang proseso.
Ang "Shell" na module ay suportado.
Ang mas mahusay na suporta para sa pagbuo ng Perl sa ilalim ng command.com sa Windows 95 ay naidagdag.
Binabasa ang mga script sa binary mode bilang default upang payagan ang ByteLoader (at ang mekanismo ng filter
sa pangkalahatan) upang gumana nang maayos. Para sa compatibility, ang DATA filehandle ay itatakda sa text
mode kung may nakitang carriage return sa dulo ng linyang naglalaman ng __END__ o
__DATA__ token; kung hindi, ang DATA filehandle ay iiwang bukas sa binary mode. Kanina
palaging binuksan ng mga bersyon ang DATA filehandle sa text mode.
Ang glob() ipinapatupad ang operator sa pamamagitan ng extension na "File::Glob", na sumusuporta sa glob
syntax ng C shell. Pinatataas nito ang flexibility ng glob() operator, ngunit doon
maaaring mga isyu sa compatibility para sa mga program na umaasa sa mas lumang globbing syntax. kung ikaw
gusto mong mapanatili ang pagiging tugma sa mas lumang syntax, maaaring gusto mong patakbuhin ang perl gamit ang
"-MFile::DosGlob". Para sa mga detalye at impormasyon sa pagiging tugma, tingnan ang File::Glob.
Makabuluhan kulisap pag-aayos
on walang laman file
Sa $/ nakatakda sa "undef", "slurping" ang isang walang laman na file ay nagbabalik ng string na zero ang haba (sa halip
ng "undef", tulad ng dati) sa unang pagkakataon na basahin ang HANDLE pagkatapos maitakda ang $/ sa "undef".
Ang karagdagang pagbabasa ay nagbubunga ng "undef".
Nangangahulugan ito na ang sumusunod ay magdaragdag ng "foo" sa isang walang laman na file (ito ay walang ginagawa noon):
perl -0777 -pi -e 's/^/foo/' empty_file
Ang pag-uugali ng:
perl -pi -e 's/^/foo/' empty_file
ay hindi nagbabago (patuloy nitong iniiwan ang file na walang laman).
"eval '...'" pagpapabuti
Mga numero ng linya (tulad ng ipinapakita ng tumatawag() at karamihan sa mga diagnostic) sa loob ng "eval '...'" ay
madalas na hindi tama kung saan dito kasama ang mga dokumento. Ito ay naitama.
Lexical lookup para sa mga variable na lumalabas sa "eval '...'" sa loob ng mga function na
ang kanilang mga sarili na tinatawag sa loob ng isang "eval '...'" ay naghahanap sa maling lugar para sa mga lexical. Ang
Ang lexical na paghahanap ay nagtatapos na ngayon sa hangganan ng bloke ng subroutine.
Ang paggamit ng "return" sa loob ng "eval {...}" ay naging sanhi ng $@ na hindi na-reset nang tama kapag hindi
naganap ang pagbubukod sa loob ng eval. Naayos na ito.
Ang pag-parse dito ng mga dokumento ay dating may depekto nang lumitaw ang mga ito bilang kapalit
expression sa "eval 's/.../.../e'". Naayos na ito.
lahat pagtitipon error ay totoo error
Ang ilang mga "error" na nakatagpo sa oras ng pag-compile ay sa pamamagitan ng pangangailangan na nabuo habang sinusunod ang mga babala
sa pamamagitan ng tuluyang pagwawakas ng programa. Ito ay nagbigay-daan sa mas maraming ganoong mga error na maiulat sa a
single run, sa halip na magdulot ng hard stop sa unang error na naranasan.
Ang mekanismo para sa pag-uulat ng mga naturang error ay muling ipinatupad sa queue compile-time
mga error at iulat ang mga ito sa dulo ng compilation bilang mga totoong error sa halip na bilang
mga babala. Inaayos nito ang mga kaso kung saan tumagas ang mga mensahe ng error sa anyo ng mga babala
kapag na-compile ang code sa oras ng pagtakbo gamit ang "eval STRING", at pinapayagan din ang mga ganitong error
mapagkakatiwalaang nakulong gamit ang "eval "..."".
Implicitly sarado filehandles ay mas ligtas
Kung minsan ay implicitly closed filehandles (tulad ng kapag sila ay naisalokal, at Perl
awtomatikong isinasara ang mga ito sa paglabas sa saklaw) ay maaaring hindi sinasadyang magtakda ng $? o $!. Ito
ay naitama.
Pag-uugali of listahan hiwa is mas marami pang pare-pareho
Kapag kumukuha ng slice ng isang literal na listahan (kumpara sa isang slice ng array o hash), Perl
ginagamit upang ibalik ang isang walang laman na listahan kung ang resulta ay binubuo ng lahat ng mga undef value.
Ang bagong pag-uugali ay upang makagawa ng isang walang laman na listahan kung (at lamang kung) ang orihinal na listahan ay walang laman.
Isaalang-alang ang sumusunod na halimbawa:
@a = (1,undef,undef,2)[2,1,2];
Ang lumang pag-uugali ay magreresulta sa @a na walang mga elemento. Tinitiyak ng bagong pag-uugali
mayroon itong tatlong hindi natukoy na elemento.
Tandaan sa partikular na ang pag-uugali ng mga hiwa ng mga sumusunod na kaso ay nananatiling hindi nagbabago:
@a = ()[1,2];
@a = (getpwent)[7,0];
@a = (anything_returning_empty_list())[2,1,2];
@a = @b[2,1,2];
@a = @c{'a','b','c'};
Tingnan ang perldata.
"(\$)" tularan at $foo{a}
Ang isang scalar reference prototype ngayon ay tama na nagbibigay-daan sa isang hash o array element sa slot na iyon.
"pumunta sa &sub" at AUTOLOAD
Ang "goto &sub" construct ay gumagana nang tama kapag ang &sub ay nagkataong na-autoload.
"-bareword" pinapayagan sa ilalim "gamitin integer"
Ang autoquoting ng mga bareword na pinangungunahan ng "-" ay hindi gumana sa mga naunang bersyon kapag ang
Pinagana ang "integer" pragma. Naayos na ito.
Pagkabigo in DESTROY()
Kapag naghagis ng exception ang code sa isang destructor, hindi ito napansin sa mga naunang bersyon ng
Perl, maliban na lang kung may nagkataong tumitingin sa $@ pagkaraan lang ng punto ang destructor
nangyaring tumakbo. Ang ganitong mga pagkabigo ay nakikita na ngayon bilang mga babala kapag ang mga babala ay pinagana.
Local bug maayos
printf() at sprintf() dati nang i-reset ang numeric locale pabalik sa default na "C" locale.
Naayos na ito.
Na-format ang mga numero ayon sa lokal na numeric locale (tulad ng paggamit ng decimal comma
sa halip na isang decimal na tuldok) ay nagdulot ng "ay hindi numeric" na mga babala, kahit na habang ang mga operasyon
ang pag-access sa mga numerong iyon ay nagbunga ng mga tamang resulta. Ang mga babalang ito ay hindi na ipinagpatuloy.
Memorya paglabas
Ang construct na "eval 'return sub {...}'" ay maaaring mag-leak minsan ng memory. Naayos na ito.
Ang mga operasyong hindi mga tagabuo ng filehandle na ginagamit sa pagtagas ng memory kapag ginamit sa hindi wasto
filehandles. Naayos na ito.
Ang mga konstruksyon na binago ang @_ ay maaaring mabigo sa pag-deallocate ng mga halaga sa @_ at sa gayon ay tumagas ang memorya.
Ito ay naitama.
Hindi totoo subroutine stubs pagkatapos Nabigo ang subroutine tawag
Minsan ay maaaring lumikha si Perl ng mga walang laman na subroutine stub kapag walang nakitang subroutine sa
pakete. Ang mga ganitong kaso ay huminto sa pag-usad sa mga pag-usad sa mga baseng pakete ng paraan ng paghahanap sa ibang pagkakataon.
Ito ay naitama.
Taint pagkabigo sa ilalim "-U"
Kapag tumatakbo sa hindi ligtas na mode, ang mga paglabag sa mantsa ay maaaring maging sanhi ng mga tahimik na pagkabigo. Ito
ay naayos na.
END bloke at ang "-c" lumipat
Ang mga naunang bersyon ay ginamit upang patakbuhin ang BEGIN at END block kapag ang Perl ay pinatakbo sa compile-only mode.
Dahil karaniwang hindi ito ang inaasahang pag-uugali, ang mga END block ay hindi na ipapatupad
kapag ginamit ang switch na "-c", o kung nabigo ang compilation.
Tingnan ang "Support for CHECK blocks" para sa kung paano patakbuhin ang mga bagay kapag natapos na ang compile phase.
Malamang na sa mahayag DATA filehandles
Ang paggamit ng token na "__DATA__" ay lumilikha ng isang implicit na filehandle sa file na naglalaman ng
token. Responsibilidad ng programa na isara ito kapag tapos na itong basahin.
Ang caveat na ito ay mas mahusay na ipinaliwanag sa dokumentasyon. Tingnan ang perldata.
bago or Binago Diagnostics
"%s" variable %s masks mas naunang deklarasyon sa parehong %s
(W misc) Ang isang "aking" o "aming" variable ay muling idineklara sa kasalukuyang saklaw o
pahayag, na epektibong inaalis ang lahat ng access sa nakaraang instance. Ito ay
halos palaging isang typographical error. Tandaan na ang naunang variable ay mananatili pa rin
hanggang sa katapusan ng saklaw o hanggang sa masira ang lahat ng pagsasara na tumutukoy dito.
"my sub" hindi pa naipatupad
(F) Hindi pa ipinapatupad ang mga subroutine na sakop ng leksikal. Huwag mo nang subukan iyon.
Muling idineklara ang "aming" variable na %s
(W misc) Tila na-declare mo na ang parehong global minsan sa kasalukuyang
leksikal na saklaw.
'!' pinapayagan lamang pagkatapos ng mga uri ng %s
(F) Ang '!' ay pinahihintulutan pack() at i-unpack() pagkatapos lamang ng ilang uri. Tingnan ang "pack" sa
perlfunc.
/ hindi makapagbilang
(F) Mayroon kang template sa pag-unpack na nagsasaad ng isang string na binibilang ang haba, ngunit mayroon ka rin
tinukoy ang isang tahasang laki para sa string. Tingnan ang "pack" sa perlfunc.
/ dapat sundan ng a, A o Z
(F) Mayroon kang template sa pag-unpack na nagsasaad ng string na binibilang ang haba, na dapat ay
na sinusundan ng isa sa mga letrang a, A o Z upang ipahiwatig kung anong uri ng string ang dapat
na-unpack. Tingnan ang "pack" sa perlfunc.
/ dapat sundan ng a*, A* o Z*
(F) Mayroon kang template ng pack na nagsasaad ng isang binilang-haba na string, Sa kasalukuyan ang tanging
Ang mga bagay na maaaring mabilang ang haba ay a*, A* o Z*. Tingnan ang "pack" sa perlfunc.
/ dapat sumunod sa isang uri ng numero
(F) Mayroon kang template na i-unpack na naglalaman ng '#', ngunit hindi ito sumunod sa ilan
numeric unpack na detalye. Tingnan ang "pack" sa perlfunc.
/%s/: Hindi nakilalang pagtakas \\%c ang dumaan
(W regexp) Gumamit ka ng kumbinasyon ng backslash-character na hindi kinikilala ng Perl.
Lumilitaw ang kumbinasyong ito sa isang interpolated na variable o isang regular na "'"-delimited
pagpapahayag. Literal na naunawaan ang karakter.
/%s/: Hindi nakilalang pagtakas \\%c sa klase ng character na dumaan
(W regexp) Gumamit ka ng kumbinasyon ng backslash-character na hindi kinikilala ng Perl
sa loob ng mga klase ng karakter. Literal na naunawaan ang karakter.
/%s/ ay dapat na isulat bilang "%s"
(W syntax) Gumamit ka ng pattern kung saan inaasahan ni Perl na makahanap ng string, tulad ng sa
unang argumento na "sumali". Ituturing ng Perl ang totoo o maling resulta ng pagtutugma ng
pattern laban sa $_ bilang string, na malamang na hindi ang nasa isip mo.
Masyadong maagang tumawag si %s() para suriin ang prototype
(W prototype) Tumawag ka ng function na may prototype bago nakita ng parser ang a
kahulugan o deklarasyon para dito, at hindi masuri ni Perl kung naaayon ang tawag sa
Ang prototype. Kailangan mong magdagdag ng maagang prototype na deklarasyon para sa
subroutine na pinag-uusapan, o ilipat ang kahulugan ng subroutine bago ang tawag para makuha
tamang prototype checking. Bilang kahalili, kung sigurado kang tinatawagan mo ang
gumana nang tama, maaari kang maglagay ng ampersand bago ang pangalan upang maiwasan ang babala.
Tingnan ang perlsub.
Ang %s argument ay hindi isang HASH o ARRAY na elemento
(F) Ang argumento sa umiiral() dapat ay hash o array element, gaya ng:
$foo{$bar}
$ref->{"susie"}[12]
Ang %s argument ay hindi isang HASH o ARRAY na elemento o slice
(F) Ang argumento sa tanggalin () dapat ay alinman sa hash o array element, gaya ng:
$foo{$bar}
$ref->{"susie"}[12]
o isang hash o array slice, gaya ng:
@foo[$bar, $baz, $xyzzy]
@{$ref->[12]}{"susie", "queue"}
Ang %s argument ay hindi isang subroutine na pangalan
(F) Ang argumento sa umiiral() para sa "umiiral na &sub" ay dapat na isang subroutine na pangalan, at hindi a
subroutine na tawag. Ang "exists &sub()" ay bubuo ng error na ito.
%s package attribute ay maaaring magkasalungat sa hinaharap na nakalaan na salita: %s
(W reserved) Ginamit ang lowercase na pangalan ng attribute na mayroong handler na partikular sa package.
Maaaring magkaroon ng kahulugan ang pangalang iyon sa Perl mismo balang araw, kahit na hindi pa.
Marahil ay dapat mong gamitin ang isang mixed-case na pangalan ng katangian, sa halip. Tingnan ang mga katangian.
(sa paglilinis) %s
(W misc) Ang prefix na ito ay karaniwang nagpapahiwatig na a DESTROY() paraan itinaas ang ipinahiwatig
pagbubukod. Dahil ang mga destructors ay karaniwang tinatawag ng system sa mga arbitrary na punto
sa panahon ng pagpapatupad, at madalas na maraming beses, ang babala ay inilabas nang isang beses lamang
para sa anumang bilang ng mga pagkabigo na kung hindi man ay magreresulta sa parehong mensahe
inulit
Ang pagkabigo ng mga callback ng user na ipinadala gamit ang flag na "G_KEEPERR" ay maaari ding magresulta sa
babalang ito. Tingnan ang "G_KEEPERR" sa perlcall.
<> dapat ay mga quotes
(F) Sumulat ka ng "require " kung kailan mo dapat isulat ang "require 'file'".
Subukang samahan ang sarili
(F) Sinubukan mong sumali sa isang thread mula sa loob mismo, na isang imposibleng gawain. Ikaw
maaaring sumali sa maling thread, o maaaring kailanganin mong ilipat ang sumali () sa ilang iba pa
thread.
Hindi magandang evalled na pattern ng pagpapalit
(F) Ginamit mo ang /e switch upang suriin ang kapalit para sa isang pagpapalit, ngunit perl
nakakita ng syntax error sa code na susuriin, malamang na isang hindi inaasahang right brace
'}'.
Masama realloc() ignorado
(S) Isang panloob na gawain na tinatawag realloc() sa isang bagay na hindi pa nangyari malloc ()ed
sa unang lugar. Mandatory, ngunit maaaring i-disable sa pamamagitan ng pagtatakda ng variable ng kapaligiran
"PERL_BADFREE" hanggang 1.
Ang bareword ay matatagpuan sa kondisyon
(W bareword) Nakahanap ang compiler ng bareword kung saan inaasahan nito ang isang kondisyon, na
madalas na nagpapahiwatig na ang isang || o && ay na-parse bilang bahagi ng huling argumento ng
nakaraang konstruksyon, halimbawa:
buksan ang FOO || mamatay;
Maaari rin itong magpahiwatig ng maling spelling na pare-pareho na na-interpret bilang isang bareword:
gumamit ng pare-parehong TYPO => 1;
if (TYOP) { print "foo" }
Ang "mahigpit" na pragma ay kapaki-pakinabang sa pag-iwas sa gayong mga pagkakamali.
Binary number > 0b11111111111111111111111111111111 non-portable
(W portable) Ang binary number na iyong tinukoy ay mas malaki kaysa sa 2**32-1 (4294967295) at
samakatuwid ay hindi portable sa pagitan ng mga system. Tingnan ang perlport para sa higit pa sa portability
alalahanin.
Bit vector size > 32 non-portable
(W portable) Ang paggamit ng mga bit vector size na mas malaki sa 32 ay hindi portable.
Buffer overflow sa prime_env_iter: %s
(W internal) Isang babala na kakaiba sa VMS. Habang naghahanda si Perl na umulit
%ENV, nakatagpo ito ng lohikal na pangalan o kahulugan ng simbolo na masyadong mahaba, kaya ganoon
pinutol sa ipinakitang string.
Hindi masuri ang filesystem ng script na "%s"
(P) Para sa ilang kadahilanan hindi mo masuri ang filesystem ng script para sa nosuid.
Hindi makapagdeklara ng klase para sa hindi scalar na %s sa "%s"
(S) Sa kasalukuyan, ang mga scalar variable lamang ang maaaring ideklara na may partikular na class qualifier sa a
"aking" o "aming" deklarasyon. Ang mga semantika ay maaaring pahabain para sa iba pang mga uri ng mga variable
sa hinaharap.
Hindi maipahayag ang %s sa "%s"
(F) Tanging ang mga variable na scalar, array, at hash ang maaaring ideklara bilang "aking" o "aming" mga variable.
Dapat silang magkaroon ng mga ordinaryong identifier bilang mga pangalan.
Hindi maaaring balewalain ang signal CHLD, na pinipilit na i-default
(W signal) Natukoy ni Perl na ito ay pinapatakbo gamit ang SIGCHLD signal (minsan
kilala bilang SIGCLD) na hindi pinagana. Dahil ang hindi pagpapagana ng signal na ito ay makagambala sa tamang
pagpapasiya ng exit status ng mga proseso ng bata, na-reset ni Perl ang signal nito
default na halaga. Karaniwang ipinahihiwatig ng sitwasyong ito na ang programa ng magulang kung saan
Maaaring tumatakbo si Perl (hal., cron) ay napakawalang-ingat.
Hindi mabago ang hindi-lvalue na subroutine na tawag
(F) Ang mga subroutine na nilalayong gamitin sa konteksto ng halaga ay dapat na ipahayag nang ganoon, tingnan
"Lvalue subroutines" sa perlsub.
Hindi mabasa ang kapaligiran ng CRTL
(S) Isang babala na kakaiba sa VMS. Sinubukan ni Perl na basahin ang isang elemento ng %ENV mula sa CRTL's
panloob na hanay ng kapaligiran at natuklasang nawawala ang array. Kailangan mong malaman
kung saan nailagay ng iyong CRTL ang kapaligiran o tinukoy nito PERL_ENV_TABLES (tingnan ang perlvms) kaya
hindi hinahanap ang kapaligiran na iyon.
Hindi maalis ang %s: %s, nilaktawan ang file
(S) Humiling ka ng inplace edit nang hindi gumagawa ng backup file. Hindi nagawa ni Perl
alisin ang orihinal na file upang palitan ito ng binagong file. Naiwan ang file
hindi binago.
Hindi maibalik ang %s mula sa subroutine ng lvalue
(F) Nakakita si Perl ng pagtatangkang ibalik ang mga ilegal na halaga (gaya ng pansamantala o readonly
values) mula sa isang subroutine na ginamit bilang isang lvalue. Ito ay hindi pinapayagan.
Hindi makapagpahina ng isang nonreference
(F) Tinangka mong pahinain ang isang bagay na hindi isang sanggunian. Mga sanggunian lamang ang maaari
manghina.
Hindi alam ang klase ng character [:%s:].
(F) Ang klase sa klase ng character na [: :] syntax ay hindi alam. Tingnan ang perlre.
Ang syntax ng klase ng character na [%s] ay kabilang sa loob ng mga klase ng character
(W hindi ligtas) Ang klase ng character ay bumubuo ng [: :], [= =], at [. .] go loob katangian
classes, ang [] ay bahagi ng construct, halimbawa: /[012[:alpha:]345]/. nota
na [= =] at [. .] ay hindi kasalukuyang ipinatupad; sila ay mga placeholder lamang para sa
mga extension sa hinaharap.
Ang Constant ay hindi %s reference
(F) Ang isang pare-parehong halaga (marahil ay ipinahayag gamit ang "use constant" pragma) ay pagiging
dereferenced, ngunit ito ay katumbas ng maling uri ng reference. Ang mensahe ay nagpapahiwatig
ang uri ng sanggunian na inaasahan. Ito ay karaniwang nagpapahiwatig ng isang syntax error sa
dereferencing ang pare-pareho ang halaga. Tingnan ang "Constant Functions" sa perlsub at constant.
constant(%s): %s
(F) Ang parser ay nakakita ng mga hindi pagkakapare-pareho habang sinusubukang tukuyin ang isang overloaded
pare-pareho, o kapag sinusubukang hanapin ang pangalan ng character na tinukoy sa "\N{...}" escape.
Marahil ay nakalimutan mong i-load ang kaukulang "overload" o "charnames" na pragma? Tingnan mo
mga anting-anting at labis na karga.
CORE::%s ay hindi isang keyword
(F) Ang CORE:: namespace ay nakalaan para sa Perl na mga keyword.
ang tinukoy(@array) ay hindi na ginagamit
(D) tinukoy() ay hindi karaniwang kapaki-pakinabang sa mga array dahil ito ay nagsusuri ng hindi natukoy
skalar halaga. Kung gusto mong makita kung walang laman ang array, gamitin lang ang "if (@array) { # not
walang laman }" halimbawa.
ang definition(%hash) ay hindi na ginagamit
(D) tinukoy() ay karaniwang hindi kapaki-pakinabang sa mga hash dahil sinusuri nito ang isang hindi natukoy
skalar halaga. Kung gusto mong makita kung walang laman ang hash, gamitin lang ang "if (%hash) { # not
walang laman }" halimbawa.
Hindi nakagawa ng wastong header
Tingnan ang Server error.
(Ang ibig mo bang sabihin ay "lokal" sa halip na "atin"?)
(W misc) Tandaan na ang "aming" ay hindi naglo-localize sa ipinahayag na global variable. meron ka
idineklara itong muli sa parehong leksikal na saklaw, na tila kalabisan.
Walang data ang dokumento
Tingnan ang Server error.
nabigo ang pagpasok ng epektibong %s
(F) Habang nasa ilalim ng "use filetest" pragma, inililipat ang tunay at epektibong mga uid o
nabigo ang gids.
false [] range na "%s" sa regexp
(W regexp) Ang isang hanay ng klase ng character ay dapat magsimula at magtapos sa isang literal na character, hindi
isa pang klase ng character tulad ng "\d" o "[:alpha:]". Ang "-" sa iyong maling hanay ay
binibigyang kahulugan bilang literal na "-". Pag-isipang banggitin ang "-", "\-". Tingnan ang perlre.
Binuksan lang ang filehandle %s para sa output
(W io) Sinubukan mong magbasa mula sa isang filehandle na binuksan lamang para sa pagsusulat. Kung sinadya mo
ito ay isang read/write filehandle, kailangan mong buksan ito gamit ang "+<" o "+>" o "+>>"
sa halip na may "<" o wala. Kung balak mo lang magbasa mula sa file, gamitin ang "<".
Tingnan ang "bukas" sa perlfunc.
kawan() sa saradong filehandle %s
(W closed) Ang filehandle na sinusubukan mong gawin kawan() ilang oras na nagsara
bago ngayon. Suriin ang iyong daloy ng lohika. kawan() gumagana sa filehandles. Ikaw ba
sinusubukang tumawag kawan() sa isang dirhandle na may parehong pangalan?
Ang pandaigdigang simbolo na "%s" ay nangangailangan ng tahasang pangalan ng package
(F) Sinabi mo na "gumamit ng mahigpit na mga vars", na nagpapahiwatig na ang lahat ng mga variable ay dapat na alinman
lexically scoped (gamit ang "my"), ipinahayag muna gamit ang "our", o tahasang
kwalipikadong sabihin kung saang package naroroon ang global variable (gamit ang "::").
Hexadecimal number > 0xffffffff non-portable
(W portable) Ang hexadecimal number na iyong tinukoy ay mas malaki sa 2**32-1 (4294967295)
at samakatuwid ay hindi portable sa pagitan ng mga system. Tingnan ang perlport para sa higit pa sa portability
alalahanin.
Hindi nabuong halaga ng kapaligiran ng CRTL na "%s"
(W internal) Isang babala na kakaiba sa VMS. Sinubukan ni Perl na basahin ang panloob ng CRTL
environ array, at nakatagpo ng isang elemento na walang "=" delimiter na ginamit upang paghiwalayin
mga susi mula sa mga halaga. Ang elemento ay hindi pinapansin.
Maling nabuong mensahe sa prime_env_iter: |%s|
(W internal) Isang babala na kakaiba sa VMS. Sinubukan ni Perl na magbasa ng isang lohikal na pangalan o CLI
kahulugan ng simbolo kapag naghahanda na umulit sa %ENV, at hindi nakita ang inaasahan
delimiter sa pagitan ng susi at halaga, kaya hindi pinansin ang linya.
Ilegal na binary digit %s
(F) Gumamit ka ng digit maliban sa 0 o 1 sa isang binary na numero.
Binalewala ang iligal na binary digit %s
(W digit) Maaaring sinubukan mong gumamit ng digit maliban sa 0 o 1 sa isang binary na numero.
Ang interpretasyon ng binary number ay huminto bago ang nakakasakit na digit.
Ilegal na bilang ng mga bit sa vec
(F) Ang bilang ng mga bit sa vec() (ang ikatlong argumento) ay dapat na kapangyarihan ng dalawa mula 1 hanggang
32 (o 64, kung sinusuportahan iyon ng iyong platform).
Integer overflow sa %s number
(W overflow) Ang hexadecimal, octal o binary na numero na iyong tinukoy bilang a
literal o bilang argumento sa hex() or okt() ay masyadong malaki para sa iyong arkitektura, at mayroon
na-convert sa isang floating point number. Sa isang 32-bit na arkitektura ang pinakamalaking
hexadecimal, octal o binary number na kinakatawan nang walang overflow ay 0xFFFFFFFF,
037777777777, o 0b11111111111111111111111111111111 ayon sa pagkakabanggit. Tandaan na si Perl
malinaw na nagpo-promote ng lahat ng numero sa isang floating point na representasyon
panloob--napapailalim sa pagkawala ng mga error sa katumpakan sa mga susunod na operasyon.
Di-wastong katangian ng %s: %s
Ang ipinahiwatig na katangian para sa isang subroutine o variable ay hindi nakilala ni Perl o ni
isang handler na ibinigay ng gumagamit. Tingnan ang mga katangian.
Di-wastong %s attribute: %s
Ang mga ipinahiwatig na katangian para sa isang subroutine o variable ay hindi nakilala ng Perl o
ng isang handler na ibinigay ng user. Tingnan ang mga katangian.
di-wastong [] hanay na "%s" sa regexp
Ang nakakasakit na saklaw ay tahasang ipinapakita na ngayon.
Di-wastong separator character %s sa listahan ng attribute
(F) May nakita maliban sa colon o whitespace sa pagitan ng mga elemento ng an
listahan ng katangian. Kung ang nakaraang katangian ay may nakakulong na listahan ng parameter, marahil
masyadong maagang natapos ang listahang iyon. Tingnan ang mga katangian.
Di-wastong separator character %s sa listahan ng katangian ng subroutine
(F) May nakita maliban sa colon o whitespace sa pagitan ng mga elemento ng a
listahan ng subroutine na katangian. Kung ang nakaraang attribute ay may nakakulong na parameter
listahan, marahil ang listahang iyon ay natapos nang masyadong maaga.
nabigo ang pag-alis sa epektibong %s
(F) Habang nasa ilalim ng "use filetest" pragma, inililipat ang tunay at epektibong mga uid o
nabigo ang gids.
Hindi pa naipatupad ang Lvalue subs na nagbabalik ng %s
(F) Dahil sa mga limitasyon sa kasalukuyang pagpapatupad, ang mga halaga ng array at hash ay hindi maaaring
ibinalik sa mga subroutine na ginamit sa konteksto ng halaga. Tingnan ang "Mga subroutine ng Lvalue" sa perlsub.
Ang pamamaraan %s ay hindi pinahihintulutan
Tingnan ang Server error.
Nawawala ang %sbrace%s sa \N{}
(F) Maling syntax ng literal na pangalan ng character na "\N{charname}" sa loob ng double-quotish
konteksto.
Nawawalang command sa piped open
(W pipe) Ginamit mo ang "open(FH, "| command")" o "open(FH, "command |")" construction,
ngunit ang utos ay nawawala o blangko.
Walang pangalan sa "aking sub"
(F) Ang nakalaan na syntax para sa lexically scoped subroutines ay nangangailangan na mayroon silang a
pangalan kung saan sila matatagpuan.
Walang %s na tinukoy para sa -%c
(F) Ang ipinahiwatig na command line switch ay nangangailangan ng mandatoryong argumento, ngunit wala ka pa
tinukoy ang isa.
Walang pinahihintulutang pangalan ng package para sa variable na %s sa "aming"
(F) Ang ganap na kwalipikadong mga pangalan ng variable ay hindi pinapayagan sa "aming" mga deklarasyon, dahil iyon
ay walang gaanong kahulugan sa ilalim ng umiiral na semantika. Ang nasabing syntax ay nakalaan para sa hinaharap
mga extension.
Walang puwang na pinapayagan pagkatapos ng -%c
(F) Ang argumento sa ipinahiwatig na command line switch ay dapat sumunod kaagad pagkatapos
ang switch, nang walang intervening space.
walang UTC offset na impormasyon; ipagpalagay na ang lokal na oras ay UTC
(S) Isang babala na kakaiba sa VMS. Hindi mahanap ni Perl ang lokal na timezone offset, kaya
ipinapalagay na ang oras ng lokal na sistema ay katumbas ng UTC. Kung hindi, tukuyin ang
lohikal na pangalan SYS$TIMEZONE_DIFFERENTIAL upang isalin sa bilang ng mga segundo na
kailangang idagdag sa UTC upang makakuha ng lokal na oras.
Octal number > 037777777777 non-portable
(W portable) Ang octal number na iyong tinukoy ay mas malaki sa 2**32-1 (4294967295) at
samakatuwid ay hindi portable sa pagitan ng mga system. Tingnan ang perlport para sa higit pa sa portability
alalahanin.
Tingnan din ang perlport para sa pagsulat ng portable code.
gulat: del_backref
(P) Nabigo ang internal consistency check habang sinusubukang i-reset ang mahinang reference.
gulat: bata popen errno basahin
(F) nagsawang bata ay nagbalik ng hindi maintindihang mensahe tungkol sa pagkakamali nito.
gulat: magic_killbackrefs
(P) Nabigo ang isang internal consistency check habang sinusubukang i-reset ang lahat ng mahinang reference sa
isang bagay.
Nawawala ang mga panaklong sa paligid ng "%s" na listahan
(W parenthesis) May sinabi ka na parang
aking $foo, $bar = @_;
kapag sinadya mo
aking ($foo, $bar) = @_;
Tandaan na ang "aking", "atin", at "lokal" ay nagbibigkis nang mas mahigpit kaysa kuwit.
Posibleng hindi sinasadyang interpolation ng %s sa string
(W ambiguous) Dati, susubukan ni Perl na hulaan kung gusto mo ng array
interpolated o isang literal na @. Hindi na nito ginagawa ito; arrays ay ngayon palagi
interpolated sa mga string. Nangangahulugan ito na kung susubukan mo ang isang bagay tulad ng:
print "[protektado ng email]";
at ang array @example ay hindi umiiral, ang Perl ay magpi-print ng "fred.com", which is
malamang hindi ang gusto mo. Para makakuha ng literal na "@" sign sa isang string, maglagay ng backslash
bago nito, tulad ng pagkuha mo ng literal na "$" sign.
Posibleng Y2K bug: %s
(W y2k) Pinagsasama mo ang numero 19 sa isa pang numero, na maaaring a
potensyal na problema sa Year 2000.
Ang pragma "attrs" ay hindi na ginagamit, gamitin ang "sub NAME : ATTRS" sa halip
(W deprecated) Nagsulat ka ng ganito:
sub doit
{
gumamit ng attrs qw(naka-lock);
}
Dapat mong gamitin ang bagong syntax ng deklarasyon sa halip.
sub doit : naka-lock
{
...
Ang "use attrs" pragma ay hindi na ginagamit ngayon, at ibinibigay lamang para sa atras-
pagkakatugma. Tingnan ang "Mga Subroutine na Katangian" sa perlsub.
Napaaga ang pagtatapos ng mga header ng script
Tingnan ang Server error.
Ulitin ang bilang sa mga pack overflow
(F) Hindi ka maaaring tumukoy ng umuulit na bilang na napakalaki na umaapaw ito sa iyong mga naka-sign na integer.
Tingnan ang "pack" sa perlfunc.
Ulitin ang bilang sa pag-unpack ng mga overflow
(F) Hindi ka maaaring tumukoy ng umuulit na bilang na napakalaki na umaapaw ito sa iyong mga naka-sign na integer.
Tingnan ang "unpack" sa perlfunc.
realloc() ng pinalayang memorya ay hindi pinansin
(S) Isang panloob na gawain na tinatawag realloc() sa isang bagay na napalaya na.
Mahina na ang reference
(W misc) Tinangka mong pahinain ang isang reference na mahina na. Ang paggawa nito ay may
walang epekto.
setpgrp ay hindi maaaring kumuha ng mga argumento
(F) Ang iyong system ay mayroong setpgrp() mula sa BSD 4.2, na hindi kumukuha ng mga argumento, hindi katulad ng POSIX
setpgid(), na kumukuha ng process ID at process group ID.
Kakaibang *+?{} sa zero-length na expression
(W regexp) Naglapat ka ng isang regular na expression quantifier sa isang lugar kung saan ito ay gumagawa ng no
kahulugan, tulad ng sa isang zero-width assertion. Subukang ilagay ang quantifier sa loob ng
paninindigan sa halip. Halimbawa, ang paraan upang tumugma sa "abc" sa kondisyon na ito ay sinusunod
sa pamamagitan ng tatlong pag-uulit ng "xyz" ay "/abc(?=(?:xyz){3})/", hindi "/abc(?=xyz){3}/".
hindi ipinatupad ang paglipat ng epektibong %s
(F) Habang nasa ilalim ng "use filetest" pragma, hindi natin maililipat ang tunay at epektibo
uid o gids.
Hindi ma-reset ng Perl na ito ang mga elemento ng kapaligiran ng CRTL (%s)
Ang Perl na ito ay hindi makapagtakda ng CRTL na mga elemento ng kapaligiran (%s=%s)
(W internal) Mga babala na kakaiba sa VMS. Sinubukan mong baguhin o tanggalin ang isang elemento ng
ang panloob na environ array ng CRTL, ngunit ang iyong kopya ng Perl ay hindi ginawa gamit ang isang CRTL na
naglalaman ng setenv() function. Kakailanganin mong buuin muli ang Perl gamit ang isang CRTL na nagagawa,
o muling tukuyin PERL_ENV_TABLES (tingnan ang perlvms) upang ang environ array ay hindi ang target
ng pagbabago sa %ENV na nagdulot ng babala.
Huli na para patakbuhin ang %s block
(W void) Ang isang CHECK o INIT block ay tinutukoy sa panahon ng tamang oras ng pagtakbo, kapag ang
ang pagkakataong patakbuhin ang mga ito ay lumipas na. Marahil ikaw ay naglo-load ng isang file na may
"nangangailangan" o "gawin" kapag dapat mong gamitin ang "gamitin" sa halip. O marahil ay dapat mong ilagay
ang "require" o "do" sa loob ng BEGIN block.
Hindi kilala bukas() mode '%s'
(F) Ang pangalawang argumento ng 3-argumento bukas() ay wala sa listahan ng mga wastong mode:
"<", ">", ">>", "+<", "+>", "+>>", "-|", "|-".
Hindi kilalang proseso %x nagpadala ng mensahe sa prime_env_iter: %s
(P) Isang error na kakaiba sa VMS. Binabasa ni Perl ang mga halaga para sa %ENV bago ang pag-ulit
ito, at may ibang naglagay ng mensahe sa stream ng data na inaasahan ni Perl. ng isang tao
napakalito, o marahil ay sinusubukang ibagsak ang populasyon ng Perl na %ENV para sa kasuklam-suklam
mga layunin.
Hindi nakilalang pagtakas \\%c ang dumaan
(W misc) Gumamit ka ng kumbinasyon ng backslash-character na hindi kinikilala ng Perl.
Literal na naunawaan ang karakter.
Hindi natapos na parameter ng katangian sa listahan ng katangian
(F) Nakita ng lexer ang isang pambungad (kaliwa) na karakter ng panaklong habang nag-parse ng isang katangian
list, ngunit hindi nakita ang katugmang closing (kanan) parenthesis character. Maaari mong
kailangang magdagdag (o mag-alis) ng backslash na character para balansehin ang iyong mga panaklong. Tingnan mo
mga katangian
Listahan ng mga katangian na hindi natapos
(F) Nakahanap si lexer ng isang bagay maliban sa isang simpleng identifier sa simula ng isang
attribute, at hindi ito semicolon o simula ng isang block. Baka nag-terminate ka
masyadong maaga ang listahan ng parameter ng nakaraang attribute. Tingnan ang mga katangian.
Hindi natapos na parameter ng katangian sa listahan ng subroutine na katangian
(F) Nakita ng lexer ang isang pambungad (kaliwa) na character na panaklong habang nag-parse ng isang subroutine
listahan ng katangian, ngunit hindi nahanap ang katugmang closing (kanan) na character na panaklong.
Maaaring kailanganin mong magdagdag (o mag-alis) ng backslash na character para makuha ang iyong mga panaklong
balanse.
Listahan ng mga katangian ng hindi natapos na subroutine
(F) May nakita si lexer maliban sa isang simpleng identifier sa simula ng a
subroutine attribute, at hindi ito semicolon o simula ng block. Marahil ikaw
winakasan masyadong maaga ang listahan ng parameter ng nakaraang attribute.
Masyadong mahaba ang value ng simbolo ng CLI na "%s".
(W misc) Isang babala na kakaiba sa VMS. Sinubukan ni Perl na basahin ang halaga ng isang %ENV na elemento
mula sa isang talahanayan ng simbolo ng CLI, at nakakita ng resultang string na mas mahaba sa 1024 na character.
Ang return value ay pinutol sa 1024 na character.
Ang numero ng bersyon ay dapat na isang pare-parehong numero
(P) Ang pagtatangkang isalin ang isang "use Module nn LIST" na pahayag sa katumbas nito
Ang "BEGIN" block ay nakakita ng panloob na hindi pagkakatugma sa numero ng bersyon.
bago pagsusulit
lib/attrs
Mga pagsubok sa pagiging tugma para sa "sub : attrs" kumpara sa mas lumang "use attrs".
lib/env
Mga pagsubok para sa bagong kakayahan sa scalar ng kapaligiran (hal., "use Env qw($BAR);").
lib/env-array
Mga pagsubok para sa bagong kakayahan sa array ng kapaligiran (hal., "use Env qw(@PATH);").
lib/io_const
IO constants (SEEK_*, _IO*).
lib/io_dir
Mga pamamaraan ng IO na nauugnay sa direktoryo (bago, basahin, isara, i-rewind, itinali na tanggalin).
lib/io_multihomed
Mga INET socket na may mga multi-homed na host.
lib/io_poll
IO poll().
lib/io_unix
Mga saksakan ng UNIX.
op/attrs
Mga pagsubok sa regression para sa "my ($x,@y,%z) : attrs" at .
op/filetest
Mga operator ng pagsubok ng file.
op/lex_assign
I-verify ang mga pagpapatakbong nag-a-access sa mga pad object (mga leksikal at pansamantalang).
op/exists_sub
I-verify ang "umiiral na &sub" na mga pagpapatakbo.
hindi kaayon Mga Pagbabago
Perl pinagmulan Incompatibilities
Mag-ingat na ang anumang mga bagong babala na idinagdag o mga luma na pinahusay ay
hindi itinuturing na hindi tugmang mga pagbabago.
Dahil ang lahat ng mga bagong babala ay dapat na tahasang hilingin sa pamamagitan ng switch na "-w" o ang "mga babala"
pragma, sa huli ay responsibilidad ng programmer na tiyakin na ang mga babala ay
pinagana nang matalino.
Ang CHECK ay isang bagong keyword
Espesyal na ngayon ang lahat ng mga subroutine na kahulugan na pinangalanang CHECK. Tingnan ang "/"Suporta para sa CHECK
blocks"" para sa higit pang impormasyon.
Nagbago ang paggamot sa mga list slice ng undef
May potensyal na hindi pagkakatugma sa pag-uugali ng mga hiwa ng listahan na binubuo
ganap na hindi natukoy na mga halaga. Tingnan ang "Higit na pare-pareho ang pag-uugali ng mga hiwa ng listahan".
Iba ang format ng $English::PERL_VERSION
Itinatakda na ngayon ng English module ang $PERL_VERSION sa $^V (isang string value) sa halip na $] (a
numerong halaga). Ito ay isang potensyal na hindi pagkakatugma. Padalhan kami ng ulat sa pamamagitan ng perlbug kung
apektado ka dito.
Tingnan ang "Pinahusay na Perl version numbering system" para sa mga dahilan para sa pagbabagong ito.
Iba-iba ang pag-parse ng mga literal sa anyong 1.2.3
Dati, ang mga numeric literal na may higit sa isang tuldok ay binibigyang kahulugan bilang a
floating point number na pinagsama-sama ng isa o higit pang mga numero. Ang ganitong mga "numero" ay ngayon
na-parse bilang mga string na binubuo ng mga tinukoy na ordinal.
Halimbawa, ang "print 97.98.99" ay ginamit upang mag-output ng 97.9899 sa mga naunang bersyon, ngunit ngayon
nagpi-print ng "abc".
Tingnan ang "Suporta para sa mga string na kinakatawan bilang isang vector ng mga ordinal".
Posibleng binago ang pseudo-random number generator
Ang mga programang Perl na umaasa sa pagpaparami ng isang partikular na hanay ng mga pseudo-random na numero ay maaaring
ngayon ay gumagawa ng iba't ibang output dahil sa mga pagpapabuti na ginawa sa rand() builtin. Kaya mo
gamitin ang "sh Configure -Drandfunc=rand" para makuha ang lumang gawi.
Tingnan ang "Mas mahusay na pseudo-random number generator".
Nagbago ang pag-andar ng pag-hash para sa mga hash key
Kahit na ang Perl hash ay hindi pag-iingat ng order, ang tila random na pagkakasunud-sunod
nakatagpo kapag ang pag-ulit sa mga nilalaman ng isang hash ay talagang tinutukoy ng
ginamit ang hashing algorithm. Ang mga pagpapabuti sa algorithm ay maaaring magbunga ng isang random na pagkakasunud-sunod na
is iba mula sa mga nakaraang bersyon, lalo na kapag umuulit sa mga hash.
Tingnan ang "Mas magandang worst-case na pag-uugali ng mga hash" para sa karagdagang impormasyon.
Nabigo ang "undef" sa mga read only na halaga
Ang paggamit ng operator na "undef" sa isang readonly na halaga (tulad ng $1) ay may parehong epekto sa
pagtatalaga ng "undef" sa readonly na halaga--naglalagay ito ng exception.
Maaaring itakda ang close-on-exec bit sa mga pipe at socket handle
Ang mga hawakan ng pipe at socket ay napapailalim din ngayon sa pag-uugaling malapit-sa-exec na tinutukoy
sa pamamagitan ng espesyal na variable na $^F.
Tingnan ang "Higit na pare-pareho ang close-on-exec na pag-uugali."
Ang pagsusulat ng "$$1" para nangangahulugang "${$}1" ay hindi suportado
Inalis ng Perl 5.004 ang interpretasyon ng $$1 at katulad sa loob ng interpolated
string na nangangahulugang "$$ . "1"", ngunit pinapayagan pa rin ito.
Sa Perl 5.6.0 at mas bago, ang "$$1" ay palaging nangangahulugang "${$1}".
tanggalin (), bawat(), halaga () at "\(%h)"
gumana sa mga alias sa mga halaga, hindi mga kopya
tanggalin (), bawat(), halaga () at mga hash (hal. "\(%h)") sa konteksto ng listahan ibalik ang
aktwal na mga halaga sa hash, sa halip na mga kopya (tulad ng dati sa mga naunang bersyon).
Ang mga karaniwang idyoma para sa paggamit ng mga construct na ito ay kinokopya ang mga ibinalik na halaga, ngunit maaari itong gawin
isang makabuluhang pagkakaiba kapag lumilikha ng mga sanggunian sa mga ibinalik na halaga. Mga susi sa
ibinabalik pa rin ang hash bilang mga kopya kapag umuulit sa isang hash.
Tingnan din "tanggalin (), bawat(), halaga () at mas mabilis ang pag-ulit ng hash".
Ang vec(EXPR,OFFSET,BITS) ay nagpapatupad ng powers-of-two BITS
vec() bubuo ng run-time na error kung ang BITS argument ay hindi wastong power-of-two
integer
Ang teksto ng ilang diagnostic na output ay nagbago
Karamihan sa mga sanggunian sa panloob na mga pagpapatakbo ng Perl sa mga diagnostic ay binago upang maging
mas deskriptibo. Maaaring isa itong isyu para sa mga program na maaaring maling umasa sa
eksaktong teksto ng mga diagnostic para sa wastong paggana.
"%@" ay inalis
Ang undocumented na espesyal na variable na "%@" na ginamit upang mag-ipon ng mga error sa "background."
(tulad ng mga nangyayari sa DESTROY()) ay tinanggal, dahil maaari itong
posibleng magresulta sa pagtagas ng memorya.
Nakakulong hindi() kumikilos tulad ng isang operator ng listahan
Ang operator na "hindi" ngayon ay nasa ilalim ng "kung ito ay mukhang isang function, ito ay kumikilos tulad ng a
function" na panuntunan.
Bilang resulta, ang nakakulong na form ay maaaring gamitin sa "grep" at "mapa". Ang mga sumusunod
Ang construct ay dati ay isang syntax error, ngunit ito ay gumagana tulad ng inaasahan ngayon:
grep not($_), @things;
Sa kabilang banda, ang paggamit ng "hindi" na may literal na hiwa ng listahan ay maaaring hindi gumana. Ang mga sumusunod
dating pinapayagang konstruksyon:
hindi i-print (1,2,3)[0];
kailangang isulat na may mga karagdagang panaklong ngayon:
print not((1,2,3)[0]);
Ang pag-uugali ay nananatiling hindi naaapektuhan kapag ang "hindi" ay hindi sinusundan ng mga panaklong.
Ang mga semantika ng bareword na prototype na "(*)" ay nagbago
Ang mga semantika ng bareword na prototype na "*" ay nagbago. Laging pinipilit ang Perl 5.005
mga simpleng scalar argument sa isang typeglob, na hindi kapaki-pakinabang sa mga sitwasyon kung saan ang
dapat makilala ng subroutine ang isang simpleng scalar at isang typeglob. Ang bagong pag-uugali
ay ang hindi pilitin ang mga walang salita na argumento sa isang typeglob. Ang halaga ay palaging makikita
bilang alinman sa isang simpleng scalar o bilang isang sanggunian sa isang typeglob.
Tingnan ang "Higit pang functional bareword prototype (*)".
Maaaring nagbago ang semantika ng mga bit operator sa 64-bit na platform
Kung ang iyong platform ay alinman sa katutubong 64-bit o kung ang Perl ay na-configure upang magamit
64-bit integer, ibig sabihin, ang $Config{ivsize} ay 8, maaaring may potensyal na hindi pagkakatugma
sa pag-uugali ng mga bitwise numeric operator (& | ^ ~ << >>). Ang mga operator na ito dati
mahigpit na gumana sa mas mababang 32 bits ng mga integer sa mga nakaraang bersyon, ngunit ngayon
gumana sa buong katutubong integral na lapad. Sa partikular, tandaan na unary "~"
gagawa ng iba't ibang resulta sa mga platform na may iba't ibang $Config{ivsize}. Para sa
portability, siguraduhing i-mask off ang labis na bits sa resulta ng unary "~", hal,
"~$x at 0xffffffff".
Tingnan ang "Sinusuportahan ng mga bit operator ang buong lapad ng native integer".
Mas maraming mga builtin ang nabahiran ang kanilang mga resulta
Gaya ng inilarawan sa "Mga pinahusay na feature ng seguridad", maaaring mayroong higit pang mga pinagmumulan ng mantsa sa a
Perl na programa.
Upang maiwasan ang mga bagong pag-uugaling ito, maaari kang bumuo ng Perl gamit ang opsyong I-configure
"-Accflags=-DINCOMPLETE_TAINTS". Mag-ingat na ang kasunod na perl binary ay maaaring hindi secure.
C pinagmulan Incompatibilities
"PERL_POLLUTE"
I-release ang 5.005 grandfathered old global na mga pangalan ng simbolo sa pamamagitan ng pagbibigay ng preprocessor macros
para sa pagiging tugma ng pinagmulan ng extension. Sa paglabas ng 5.6.0, ang mga preprocessor na ito
Ang mga kahulugan ay hindi magagamit bilang default. Kailangan mong tahasan na mag-compile ng perl sa
"-DPERL_POLLUTE" upang makuha ang mga kahulugang ito. Para sa mga extension na gumagamit pa rin ng luma
mga simbolo, maaaring tukuyin ang opsyong ito sa pamamagitan ng MakeMaker:
perl Makefile.PL POLLUTE=1
"PERL_IMPLICIT_CONTEXT"
Ang bagong build option na ito ay nagbibigay ng isang set ng mga macro para sa lahat ng mga function ng API tulad ng isang
ipinapasa ang implicit interpreter/thread context argument sa bawat function ng API. Bilang isang
resulta nito, ang isang bagay tulad ng "sv_setsv(foo,bar)" ay katumbas ng isang macro invocation na
talagang isinasalin sa isang bagay tulad ng "Perl_sv_setsv(my_perl,foo,bar)". Habang ito ay
karaniwang inaasahan na walang anumang makabuluhang isyu sa compatibility ng pinagmulan, ang
Ang pagkakaiba sa pagitan ng isang macro at isang tunay na function na tawag ay kailangang isaalang-alang.
Ibig sabihin doon is isang isyu sa source compatibility bilang resulta nito kung ang iyong
sinusubukan ng mga extension na gumamit ng mga pointer sa alinman sa mga function ng Perl API.
Tandaan na ang isyu sa itaas ay hindi nauugnay sa default na build ng Perl, na kung saan
ang mga interface ay patuloy na tumutugma sa mga naunang bersyon (ngunit napapailalim sa iba pang mga opsyon
inilarawan dito).
Tingnan ang "Background at PERL_IMPLICIT_CONTEXT" sa perlguts para sa detalyadong impormasyon sa
mga epekto ng pagbuo ng Perl gamit ang pagpipiliang ito.
TANDAAN: Awtomatikong pinapagana ang PERL_IMPLICIT_CONTEXT sa tuwing binuo ang Perl
gamit ang isa sa -Dusethreads, -Dusemultiplicity, o pareho. Hindi ito
nilalayong paganahin ng mga user sa oras na ito.
"PERL_POLLUTE_MALLOC"
Ang pagpapagana sa malloc ni Perl sa release 5.005 at mas maaga ay naging sanhi ng namespace ng
malloc na pamilya ng mga function ng system na aagawin ng mga bersyon ng Perl, dahil sa pamamagitan ng
default na ginamit nila ang parehong mga pangalan. Bukod sa nagiging sanhi ng mga problema sa mga platform na hindi
payagan ang mga function na ito na malinis na palitan, nangangahulugan din ito na ang mga bersyon ng system
hindi matawagan sa mga program na gumamit ng malloc ni Perl. Mga nakaraang bersyon ng Perl
pinahintulutan ang pag-uugaling ito na sugpuin gamit ang HIDEMYMALLOC at EMBEDMYMALLOC
mga kahulugan ng preprocessor.
Sa paglabas ng 5.6.0, ang malloc na pamilya ng mga function ng Perl ay may mga default na pangalan na naiiba
mula sa mga bersyon ng system. Kailangan mong tahasan na mag-compile ng perl sa
"-DPERL_POLLUTE_MALLOC" upang makuha ang mas lumang gawi. HIDEMYMALLOC at EMBEDMYMALLOC
walang epekto, dahil ang pag-uugaling pinagana nila ay ang default na ngayon.
Tandaan na ginagawa ng mga function na ito hindi bumubuo sa Perl's memory allocation API. Tingnan ang "Memorya
Allocation" sa perlguts para sa karagdagang impormasyon tungkol doon.
Magkasundo C pinagmulan API Mga Pagbabago
Ang "PATCHLEVEL" ay "PERL_VERSION" na ngayon
Ang cpp macros na "PERL_REVISION", "PERL_VERSION", at "PERL_SUBVERSION" ay ngayon
available bilang default mula sa perl.h, at ipinapakita ang base revision, patchlevel, at
pagkawasak ayon sa pagkakabanggit. Ang "PERL_REVISION" ay walang naunang katumbas, habang
Ang "PERL_VERSION" at "PERL_SUBVERSION" ay dating available bilang "PATCHLEVEL" at
"SUBVERSION".
Ang mga bagong pangalan ay nagdudulot ng mas kaunting polusyon ng cpp namespace at sumasalamin sa kung ano ang mga numero
ay naninindigan sa karaniwang gawain. Para sa pagkakatugma, ang mga lumang pangalan ay pa rin
suportado kapag patchlevel.h ay tahasang kasama (tulad ng kinakailangan noon), kaya mayroon
walang source incompatibility mula sa pagbabago.
binary Incompatibilities
Sa pangkalahatan, ang default na build ng release na ito ay inaasahang magiging binary compatible para sa
mga extension na binuo gamit ang 5.005 na release o ang mga bersyon ng pagpapanatili nito. Gayunpaman, tiyak
maaaring nasira ng mga platform ang binary compatibility dahil sa mga pagbabago sa mga default na ginamit sa
mga pahiwatig ng mga file. Samakatuwid, pakitiyak na palaging suriin ang mga file na README na partikular sa platform
para sa anumang mga tala sa kabaligtaran.
Ang mga usethread o usemultiplicity build ay hindi binary compatible sa kaukulang
bubuo sa 5.005.
Sa mga platform na nangangailangan ng tahasang listahan ng mga pag-export (AIX, OS/2 at Windows, kasama ng
iba pa), puro panloob na mga simbolo tulad ng parser function at ang run time opcodes ay hindi
na-export bilang default. Ang Perl 5.005 ay ginamit upang i-export ang lahat ng mga pag-andar hindi isinasaalang-alang kung sila
ay itinuturing na bahagi ng pampublikong API o hindi.
Para sa buong listahan ng mga pampublikong function ng API, tingnan ang perlapi.
Kilala Mga Problema
sinulid pagsusulit pagkabigo
Ang mga subtest 19 at 20 ng lib/thr5005.t na pagsubok ay kilala na nabigo dahil sa mga pangunahing problema
sa pagpapatupad ng 5.005 threading. Ang mga ito ay hindi bagong mga pagkabigo--Perl 5.005_0x ay may
parehong mga bug, ngunit walang mga pagsubok na ito.
EBCDIC platform hindi suportado
Sa mga naunang release ng Perl, EBCDIC environment tulad ng OS390 (kilala rin bilang Open Edition
MVS) at VM-ESA ay suportado. Dahil sa mga pagbabagong kinakailangan ng suporta ng UTF-8 (Unicode),
ang mga platform ng EBCDIC ay hindi suportado sa Perl 5.6.0.
In 64-bit HP-UX ang lib/io_multihomed pagsusulit maaari bumitin
Ang lib/io_multihomed test ay maaaring mag-hang sa HP-UX kung ang Perl ay na-configure upang maging 64-bit.
Dahil ang ibang 64-bit na mga platform ay hindi nakabitin sa pagsubok na ito, pinaghihinalaan ang HP-UX. Lahat ng iba pa
pumasa ang mga pagsubok sa 64-bit na HP-UX. Sinusubukan ng pagsubok na gumawa at kumonekta sa "multihomed"
mga socket (mga socket na mayroong maraming IP address).
SUSUNOD NA HAKBANG 3.3 POSIX pagsusulit pagkabigo
Sa NEXTSTEP 3.3p2 ang pagpapatupad ng strftime(3) sa mga aklatan ng operating system
ay maraming surot: ang %j na format ay binibilang ang mga araw ng isang buwan simula sa zero, na, habang nasa
lohikal sa mga programmer, ay magiging sanhi ng mga subtest na 19 hanggang 27 ng lib/posix na pagsubok ay maaaring mabigo.
Tru64 (Aka Digital UNIX, aka Disyembre OSF/1) lib/sdbm pagsusulit pagkabigo sa gcc
Kung pinagsama-sama sa gcc 2.95 ang lib/sdbm test ay mabibigo (dump core). Ang lunas ay ang paggamit ng
vendor cc, ito ay kasama ng operating system at gumagawa ng magandang code.
UNICOS/mk CC pagkabigo sa panahon ng I-configure ang tumakbo
Sa UNICOS/mk ang mga sumusunod na error ay maaaring lumitaw sa panahon ng Configure run:
Paghula kung aling mga simbolo ang tinukoy ng iyong C compiler at preprocessor...
CC-20 cc: ERROR File = try.c, Line = 3
...
masamang switch yylook 79masamang switch yylook 79masamang switch yylook 79masamang switch yylook 79#ifdef A29K
...
4 na error ang nakita sa compilation ng "try.c".
Ang salarin ay ang sirang awk ng UNICOS/mk. Sa kabutihang palad, ang epekto ay medyo banayad: Perl
mismo ay hindi naapektuhan ng error, tanging ang h2ph utility na kasama ng Perl, at
na sa halip ay bihirang kailanganin ngayon.
Palaso opereytor at mga dumadating
Kapag ang kaliwang argumento sa arrow operator na "->" ay isang array, o ang "scalar" operator
operating sa isang array, ang resulta ng operasyon ay dapat ituring na mali. Para sa
halimbawa:
@x->[2]
scalar(@x)->[2]
Ang mga expression na ito ay makakakuha ng mga run-time na error sa ilang hinaharap na release ng Perl.
Pang-eksperimentong mga tampok
Tulad ng tinalakay sa itaas, maraming mga tampok ay pang-eksperimento pa rin. Mga interface at pagpapatupad
sa mga tampok na ito ay napapailalim sa pagbabago, at sa matinding mga kaso, kahit na napapailalim sa pag-alis sa
ilang hinaharap na release ng Perl. Kasama sa mga tampok na ito ang mga sumusunod:
Thread
Unicode
64-bit na suporta
Mga subroutine sa halaga
Mga mahihinang sanggunian
Ang pseudo-hash na uri ng data
Ang Compiler suite
Panloob na pagpapatupad ng file globbing
Ang DB module
Ang regular na expression code ay bumubuo:
"(?{ code })" at "(??{ code })"
Hindi na ginagamit Diagnostics
Ang syntax ng klase ng character [: :] ay nakalaan para sa mga extension sa hinaharap
(W) Sa loob ng regular na expression ng mga klase ng character ([]) ang syntax na nagsisimula sa "[:"
at nagtatapos sa ":]" ay nakalaan para sa mga extension sa hinaharap. Kung kailangan mong kumatawan
ang mga pagkakasunud-sunod ng character na iyon sa loob ng isang regular na expression ng klase ng character, sipiin lamang ang
mga square bracket na may backslash: "\[:" at ":\]".
Maling nabuong lohikal na pangalan |%s| sa prime_env_iter
(W) Isang babala na kakaiba sa VMS. Isang lohikal na pangalan ang nakatagpo kapag naghahanda sa
umulit sa %ENV na lumalabag sa mga syntactic na panuntunan na namamahala sa mga lohikal na pangalan. kasi
hindi ito maisasalin nang normal, nilaktawan ito, at hindi lalabas sa %ENV. Ito
maaaring isang hindi magandang pangyayari, dahil maaaring direktang baguhin ng ilang software package ang lohikal
pangalanan ang mga talahanayan at ipakilala ang mga hindi karaniwang pangalan, o maaari itong magpahiwatig na isang lohikal na pangalan
mesa ay nasira.
Sa string, ang @%s ngayon ay dapat na isulat bilang \@%s
Ang paglalarawan ng error na ito ay ginamit upang sabihin:
(Balang araw ay ipagpalagay na lang na ang isang unbackslashed @
interpolate ng array.)
Dumating na ang araw na iyon, at ang nakamamatay na pagkakamaling ito ay inalis na. Ito ay pinalitan ng a
hindi nakamamatay na babala sa halip. Tingnan ang "Ang mga arrays ngayon ay laging nag-interpolate sa double-quoted
string" para sa mga detalye.
Malamang na nauuna ang problema sa %s
(W) Nakahanap ang compiler ng bareword kung saan inaasahan nito ang isang kondisyon, na madalas
ay nagpapahiwatig na ang isang || o && ay na-parse bilang bahagi ng huling argumento ng nauna
bumuo, halimbawa:
buksan ang FOO || mamatay;
masyadong malaki ang regexp
(F) Ang kasalukuyang pagpapatupad ng mga regular na expression ay gumagamit ng mga shorts bilang mga offset ng address
sa loob ng isang string. Sa kasamaang palad, nangangahulugan ito na kung ang regular na expression ay nag-compile sa
mas mahaba sa 32767, sasabog ito. Kadalasan kapag gusto mo ng regular na expression ito
malaki, mayroong isang mas mahusay na paraan upang gawin ito sa maraming mga pahayag. Tingnan ang perlre.
Paggamit ng "$$ " ang ibig sabihin ay "${$} " ay hindi na ginagamit
(D) Ang mga bersyon ng Perl bago ang 5.004 ay nagkamali ng kahulugan sa anumang uri ng marker na sinusundan ng "$" at isang
digit. Halimbawa, ang "$$0" ay hindi wastong kinuha na "${$}0" sa halip na "${$0}".
Ang bug na ito ay (karamihan) naayos sa Perl 5.004.
Gayunpaman, hindi ganap na maayos ng mga developer ng Perl 5.004 ang bug na ito, dahil sa
hindi bababa sa dalawang malawak na ginagamit na mga module ang nakasalalay sa lumang kahulugan ng "$$0" sa isang string. Kaya Perl
Ang 5.004 ay binibigyang-kahulugan pa rin ang "$$ " sa lumang (sirang) paraan sa loob ng mga string; ngunit ito
bumubuo ng mensaheng ito bilang babala. At sa Perl 5.005, ang espesyal na paggamot na ito ay
huminto.
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. Maaaring mayroon ding impormasyon sa http://www.perl.com/perl/
, ang Perl Home Page.
Kung naniniwala kang mayroon kang hindi naiulat na bug, mangyaring patakbuhin ang perlbug programang kasama sa
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.
Gamitin ang perl56delta online gamit ang mga serbisyo ng onworks.net