Ito ang command na perl581delta 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
perl581delta - ano ang bago para sa perl v5.8.1
DESCRIPTION
Inilalarawan ng dokumentong ito ang mga pagkakaiba sa pagitan ng release na 5.8.0 at ng release na 5.8.1.
Kung nag-a-upgrade ka mula sa naunang release gaya ng 5.6.1, basahin muna ang perl58delta,
na naglalarawan ng mga pagkakaiba sa pagitan ng 5.6.0 at 5.8.0.
Kung sakaling ikaw ay nagtataka tungkol sa 5.6.1, ito ay bug-fix-wise sa halip na kapareho ng
pagpapalabas ng development 5.7.1. nalilito? Sana ay nakakatulong ng kaunti ang timeline na ito: inililista nito ang
mga bagong major release, ang kanilang maintenance release, at ang development release.
Bagong Pagpapaunlad ng Pagpapanatili
5.6.0 2000-Mar-22
5.7.0 2000-Set-02
5.6.1 2001-Abr-08
5.7.1 2001-Abr-09
5.7.2 2001-Hul-13
5.7.3 2002-Mar-05
5.8.0 2002-Hul-18
5.8.1 2003-Set-25
hindi kaayon Mga Pagbabago
Sumira Randomization
Pangunahin dahil sa mga kadahilanang pangseguridad, ang "random na pag-order" ng mga hash ay ginawa pa
random. Dati habang ang pagkakasunud-sunod ng mga elemento ng hash mula sa mga susi(), halaga (), at bawat() ay
mahalagang random, ito ay paulit-ulit pa rin. Ngayon, gayunpaman, ang pagkakasunud-sunod ay nag-iiba sa pagitan
iba't ibang run ng Perl.
Perl ay hindi kailanman katiyakan anumang pag-order of ang sumira mga susi, at ang pag-order ay mayroon na
nagbago ng ilang beses sa buong buhay ng Perl 5. Gayundin, ang pag-order ng mga hash key ay may
palaging, at patuloy na, apektado ng insertion order.
Ang idinagdag na randomness ay maaaring makaapekto sa mga application.
Ang isang posibleng senaryo ay kapag ang output ng isang application ay may kasamang hash data. Para sa
halimbawa, kung ginamit mo ang Data::Dumper module upang i-dump ang data sa iba't ibang file, at
pagkatapos ay inihambing ang mga file upang makita kung ang data ay nagbago, ngayon ay magkakaroon ka ng false
positibo dahil mag-iiba-iba ang pagkakasunud-sunod ng pagtatapon ng mga hash. Sa pangkalahatan ang lunas ay ang
ayusin ang mga susi (o ang mga halaga); sa partikular para sa Data::Dumper na gamitin ang "Mga Sortkey"
opsyon. Kung ang ilang partikular na pagkakasunud-sunod ay talagang mahalaga, gumamit ng mga nakatali na hash: halimbawa ang
Tie::IxHash module na bilang default ay pinapanatili ang pagkakasunud-sunod kung saan ang mga elemento ng hash
idinagdag.
Ang mas banayad na problema ay ang pag-asa sa pagkakasunud-sunod ng "global na pagkawasak". Iyon ay kung ano
nangyayari sa pagtatapos ng execution: Sinisira ng Perl ang lahat ng istruktura ng data, kabilang ang data ng user.
Kung ang iyong mga destructor (ang mga subroutine ng DESTROY) ay nagpalagay ng anumang partikular na pag-order sa
pandaigdigang pagkawasak, maaaring may mga problema sa hinaharap. Halimbawa, sa isang destructor ng isa
bagay na hindi mo maaaring ipagpalagay na ang mga bagay ng anumang iba pang klase ay magagamit pa rin, maliban kung ikaw
humawak ng reference sa kanila. Kung ang environment variable na PERL_DESTRUCT_LEVEL ay nakatakda sa a
non-zero value, o kung lalabas si Perl sa isang spawned thread, sisirain din nito ang ordinaryo
mga sanggunian at ang mga talahanayan ng simbolo na hindi na ginagamit. Hindi ka makakatawag ng paraan ng klase
o isang ordinaryong function sa isang klase na nakolekta sa ganoong paraan.
Ang hash randomization ay tiyak na magbubunyag ng mga nakatagong pagpapalagay tungkol sa ilang partikular
pag-order ng mga elemento ng hash, at tahasang mga bug: nagsiwalat ito ng ilang mga bug sa core ng Perl at
mga pangunahing module.
Upang i-disable ang hash randomization sa runtime, itakda ang environment variable na PERL_HASH_SEED
hanggang 0 (zero) bago patakbuhin ang Perl (para sa higit pang impormasyon tingnan ang "PERL_HASH_SEED" sa perlrun), o
upang ganap na huwag paganahin ang tampok sa oras ng pag-compile, mag-compile gamit ang "-DNO_HASH_SEED" (tingnan
INSTALL).
Tingnan ang "Algorithmic Complexity Attacks" sa perlsec para sa orihinal na katwiran sa likod nito
baguhin.
UTF-8 On Mga filehandle Hindi Mas mahaba activated By Local
Sa Perl 5.8.0 lahat ng filehandles, kasama ang karaniwang filehandles, ay tahasang itinakda sa
nasa Unicode UTF-8 kung ang mga setting ng lokal ay nagpahiwatig ng paggamit ng UTF-8. Ang tampok na ito
nagdulot ng napakaraming problema, kaya na-off at muling idisenyo ang feature: tingnan ang "Core
Mga pagpapahusay".
Single-number v-strings ay hindi mas mahaba v-strings bago " =>"
Ang mga string ng bersyon o v-string (tingnan ang "Mga String ng Bersyon" sa perldata) na tampok na ipinakilala sa
Ang Perl 5.6.0 ay naging pinagmulan ng ilang kalituhan-- lalo na kapag ayaw ng user
gamitin ito, ngunit naisip ni Perl na mas alam nito. Lalo na mahirap ang naging tampok na iyon
bago ang isang "=>" isang string ng bersyon (isang "v" na sinusundan ng mga digit) ay binibigyang kahulugan bilang a
v-string sa halip na literal na string. Sa ibang salita:
%h = ( v65 => 42 );
ay sinadya mula noong Perl 5.6.0
%h = ( 'A' => 42 );
(hindi bababa sa mga platform ng ASCII progeny) Ipinapanumbalik ng Perl 5.8.1 ang mas natural
interpretasyon
%h = ( 'v65' => 42 );
Ang mga multi-number v-strings tulad ng v65.66 at 65.66.67 ay patuloy pa ring v-strings sa Perl
5.8.
(Win32) Ang -C lumipat May Naging Naipalabas ulit
Ang -C switch ay nagbago sa isang hindi tugmang paraan. Ang lumang semantika ng switch na ito lamang
may katuturan sa Win32 at sa uniberso na "gamitin ang utf8" sa 5.6.x na mga release, at huwag gumawa
kahulugan para sa pagpapatupad ng Unicode sa 5.8.0. Dahil hindi nagamit ang switch na ito
ng sinuman, ito ay muling ginamit. Ang gawi na pinagana ng switch na ito sa 5.6.x
ang mga release ay maaaring suportahan sa isang transparent, data-dependent na paraan sa isang release sa hinaharap.
Para sa bagong buhay ng switch na ito, tingnan ang "UTF-8 hindi na default sa ilalim ng UTF-8 locales", at
"-C" sa perlrun.
(Win32) Ang /d lumipat Of cmd.exe
Ginagamit ng Perl 5.8.1 ang /d switch kapag pinapatakbo ang cmd.exe shell sa loob para sa sistema(),
backtick, at kapag nagbubukas ng mga tubo sa mga panlabas na programa. Hindi pinapagana ng sobrang switch ang
pagpapatupad ng mga utos ng AutoRun mula sa pagpapatala, na karaniwang itinuturing na hindi kanais-nais
kapag nagpapatakbo ng mga panlabas na programa. Kung nais mong mapanatili ang pagiging tugma sa mas nakatatanda
pag-uugali, itakda ang PERL5SHELL sa iyong kapaligiran sa "cmd /x/c".
Ubod Mga Pagpapahusay
UTF-8 hindi mas mahaba default sa ilalim UTF-8 lokal
Sa Perl 5.8.0 maraming mga tampok na Unicode ang ipinakilala. Ang isa sa kanila ay natagpuang higit pa
istorbo kaysa benepisyo: ang awtomatikong (at tahimik) na "UTF-8-ification" ng mga filehandle,
kabilang ang mga karaniwang filehandle, kung ang mga setting ng lokal na gumagamit ay nagpapahiwatig ng paggamit ng UTF-8.
Halimbawa, kung mayroon kang "en_US.UTF-8" bilang iyong lokal, ang iyong STDIN at STDOUT ay
awtomatikong "UTF-8", sa madaling salita isang implicit na binmode(..., ":utf8") ay ginawa. Ito
ibig sabihin na sinusubukang mag-print, sabihin, chr(0xff), natapos ang pag-print ng mga byte na 0xc3 0xbf. Halos hindi
kung ano ang nasa isip mo maliban kung alam mo ang tampok na ito ng Perl 5.8.0. Ang problema ay
na ang karamihan sa mga tao ay hindi: halimbawa sa RedHat release 8 at 9 ang
default Ang setting ng locale ay UTF-8, kaya lahat ng user ng RedHat ay nakakuha ng UTF-8 filehandles, sila man
ginusto man o hindi. Ang sakit ay pinatindi ng pagpapatupad ng Unicode ng Perl 5.8.0
(pa rin) pagkakaroon ng masasamang bug, lalo na nauugnay sa paggamit ng s/// at tr///. (Mga bug na
ay naayos sa 5.8.1)
Samakatuwid, gumawa ng desisyon na i-backtrack ang feature at baguhin ito mula sa implicit na silent
default sa tahasang nakakamalay na opsyon. Ang bagong Perl command line na opsyon na "-C" at nito
Ang katapat na environment variable na PERL_UNICODE ay magagamit na ngayon upang kontrolin kung paano Perl at
Ang Unicode ay nakikipag-ugnayan sa mga interface tulad ng I/O at halimbawa ang mga argumento ng command line. Tingnan mo
"-C" sa perlrun at "PERL_UNICODE" sa perlrun para sa higit pang impormasyon.
Hindi ligtas signal muli magagamit
Sa Perl 5.8.0 ang tinatawag na "safe signals" ay ipinakilala. Nangangahulugan ito na ang Perl no
na humahawak kaagad ng mga signal ngunit sa halip ay "sa pagitan ng mga opcode", kapag ligtas itong gawin
kaya. Ang mas maagang agarang paghawak ay madaling masira ang panloob na estado ng Perl,
na nagreresulta sa mahiwagang pag-crash.
Gayunpaman, ang bagong mas ligtas na modelo ay may mga problema rin. Dahil ngayon ay isang opcode, isang pangunahing yunit ng
Perl execution, ay hindi kailanman naaantala ngunit sa halip ay hayaang tumakbo hanggang sa pagkumpleto, tiyak
ang mga operasyon na maaaring tumagal ng mahabang panahon ngayon ay talagang tumatagal ng mahabang panahon. Halimbawa, tiyak
ang mga pagpapatakbo ng network ay may sariling mga mekanismo ng pag-block at timeout, at magagawa
matakpan sila kaagad ay magiging maganda.
Samakatuwid ang perl 5.8.1 ay nagpapakilala ng "backdoor" upang ibalik ang pre-5.8.0 (pre-5.7.3, talaga)
pag-uugali ng signal. Itakda lang ang environment variable na PERL_SIGNALS sa "unsafe", at ang luma
ang agarang (at hindi ligtas) na pag-uugali sa paghawak ng signal ay nagbabalik. Tingnan ang "PERL_SIGNALS" sa perlrun
at "Mga Ipinagpaliban na Signal (Mga Ligtas na Signal)" sa perlipc.
Sa ganap na walang kaugnayang balita, maaari ka na ngayong gumamit ng mga ligtas na signal sa POSIX::SigAction. Tingnan mo
"POSIX::SigAction" sa POSIX.
nakatali Mga Arrays sa Negatibo Ayos Index
Dati, ang mga indeks ay ipinasa sa "FETCH", "STORE", "EXISTS", at "DELETE" na mga pamamaraan sa nakatali
Ang klase ng array ay palaging hindi negatibo. Kung negatibo ang aktwal na argumento, gagawin ni Perl
tawagan ang FETCHSIZE nang tahasan at idagdag ang resulta sa index bago ipasa ang resulta sa
pamamaraan ng tied array. Opsyonal na ang ugali na ito. Kung ang klase ng nakatali na array ay naglalaman ng a
package variable na pinangalanang $NEGATIVE_INDICES na nakatakda sa isang tunay na halaga, mga negatibong halaga
ipapasa sa "FETCH", "STORE", "EXISTS", at "DELETE" na hindi nababago.
lokal ${$x}
Ang mga syntax
lokal na ${$x}
lokal na @{$x}
lokal na %{$x}
ngayon ay mag-localize ng mga variable, dahil ang $x ay isang wastong pangalan ng variable.
Unicode Katangian Database 4.0.0
Ang kopya ng Unicode Character Database na kasama sa Perl 5.8 ay na-update sa 4.0.0
mula sa 3.2.0. Ibig sabihin, halimbawa, ang mga katangian ng karakter ng Unicode ay tulad ng sa
Unicode 4.0.0.
Deprecation Babala
May isang bagong paghinto sa paggamit ng feature. Nakalimutan ng Perl 5.8.0 na magdagdag ng ilang babala sa paghinto sa paggamit,
ang mga babalang ito ay naidagdag na ngayon. Panghuli, isang paalala ng isang nalalapit na pag-alis ng feature.
(Paalala) Pseudo-hashes ay hindi na ginagamit (Talaga)
Ang mga pseudo-hash ay hindi na ginagamit sa Perl 5.8.0 at aalisin sa Perl 5.10.0, tingnan
perl58delta para sa mga detalye. Ang bawat pagtatangkang mag-access ng mga pseudo-hashes ay magti-trigger ng babala
"Hindi na ginagamit ang mga pseudo-hash". Kung gusto mo talagang magpatuloy sa paggamit ng pseudo-hashes ngunit
para hindi makita ang mga babala sa paghinto sa paggamit, gamitin ang:
walang mga babala na 'hindi na ginagamit';
O maaari mong patuloy na gamitin ang mga field na pragma, ngunit mangyaring huwag asahan ang mga istruktura ng data
para maging pseudohashes pa.
(Paalala) 5.005-style mga thread ay hindi na ginagamit (Talaga)
Ang mga 5.005-style na thread (na-activate ng "use Thread;") ay hindi na ginagamit sa Perl 5.8.0 at magiging
inalis pagkatapos ng Perl 5.8, tingnan ang perl58delta para sa mga detalye. Bawat 5.005-style na paggawa ng thread
ay magti-trigger ng babala na "5.005 na mga thread ay hindi na ginagamit". Kung gusto mo talagang ituloy
gamit ang 5.005 na mga thread ngunit hindi upang makita ang mga babala sa paghinto, gamitin ang:
walang mga babala na 'hindi na ginagamit';
(Paalala) Ang $* nagbabago is hindi na ginagamit (Talaga)
Ang $* variable na kumokontrol sa pagtutugma ng maraming linya ay hindi na ginagamit at aalisin
pagkatapos ng 5.8. Ang variable ay hindi na ginagamit sa loob ng mahabang panahon, at isang babala sa paghinto
"Ang paggamit ng $* ay hindi na ginagamit" ay ibinigay, ngayon ang variable ay sa wakas ay aalisin. Ang
ang functionality ay napalitan ng "/s" at "/m" modifier sa pagtutugma ng pattern. Kung
gusto mo talagang ipagpatuloy ang paggamit ng $*-variable ngunit hindi upang makita ang mga babala sa paghinto,
gamitin ang:
walang mga babala na 'hindi na ginagamit';
sari-sari Mga Pagpapahusay
Ang "mapa" sa walang bisa na konteksto ay hindi na mahal. Alam na ngayon ng "mapa" ang konteksto, at hindi
bumuo ng isang listahan kung tinawag sa walang bisa na konteksto.
Kung ang isang socket ay isasara ng server habang nagpi-print dito, ang kliyente ay nakakakuha na ngayon ng isang SIGPIPE.
Bagama't hindi pinlano ang bagong feature na ito, natural itong nawala sa mga pagbabago ng PerlIO, at ito ay
maituturing na isang hindi sinasadyang tampok.
PerlIO::get_layers(FH) ay nagbabalik ng mga pangalan ng PerlIO layer na aktibo sa isang filehandle.
PerlIO::via layers ay maaari na ngayong magkaroon ng opsyonal na paraan ng UTF8 upang isaad kung ang layer
gustong "auto-:utf8" ang stream.
utf8::is_utf8() ay naidagdag bilang isang mabilis na paraan upang subukan kung ang isang scalar ay naka-encode
panloob sa UTF-8 (Unicode).
Module at Pragmatiko
Na-update Module at Pragmatiko
Ang mga sumusunod na module at pragmata ay na-update mula noong Perl 5.8.0:
base
B::Bytecode
Sa mas magandang hugis kaysa dati. Malayo pa rin sa perpekto, ngunit marahil ay nagkakahalaga ng isang
subukan.
B::Maikli
B::Umalis ka na
Benchmark
Ang isang opsyonal na tampok, ":hireswallclock", ay nagbibigay-daan na ngayon para sa mataas na resolution ng wall clock
beses (gumagamit ng Time::HiRes).
ByteLoader
Tingnan ang B::Bytecode.
bytes
Ngayon ay may bytes::substr.
CGI
mga anting-anting
Ang isa ay maaari na ngayong magkaroon ng mga custom na pangalan ng character na alias.
CPAN
Mayroon na ngayong simpleng command line frontend sa CPAN.pm module na tinatawag cpan.
Data::Dumper
Ang isang bagong opsyon, Pair, ay nagbibigay-daan sa pagpili ng separator sa pagitan ng mga hash key at value.
DB_File
Devel::PPPort
Digest::MD5
I-encode
Mga makabuluhang update sa pag-andar ng pag-encode ng pragma (tr/// at ang DATA
filehandle, mga format).
Kung ang isang filehandle ay minarkahan bilang may isang pag-encode, ang mga hindi mai-map na character ay
nakita na sa panahon ng pag-input, hindi sa ibang pagkakataon (kapag ginagamit ang sirang data).
Ang ISO 8859-6 na talahanayan ng conversion ay naitama (ang 0x30..0x39 ay maling nakamapa
sa U+0660..U+0669, sa halip na U+0030..U+0039). Ang GSM 03.38 conversion ay hindi
hawakan nang tama ang mga escape sequence. Ang pag-encode ng UTF-7 ay naidagdag na (ginagawa ang Encode
feature-kumpleto sa Unicode::String).
patlang
libnet
Math::BigInt
Maraming mga bug ang naayos mula noong v1.60, ang bersyon na kasama sa Perl v5.8.0.
Lalo na kapansin-pansin ang bug sa Calc na naging sanhi ng div at mod na mabigo para sa ilan
malalaking halaga, at ang mga pag-aayos sa paghawak ng masasamang input.
Ang ilang mga bagong tampok ay idinagdag, hal broot() paraan, maaari mo na ngayong ipasa ang mga parameter sa
config() upang baguhin ang ilang mga setting sa runtime, at posible na ngayong ma-trap ang
paglikha ng NaN at infinity.
Gaya ng dati, naganap ang ilang pag-optimize at ginawang mas mabilis ang kabuuan ng matematika. Sa
ilang mga kaso, medyo mas mabilis, talaga. Lalo na ang mga alternatibong aklatan tulad ng
Math::BigInt::GMP makikinabang dito. Bilang karagdagan, marami sa mga medyo clunky na gawain
gaya ng fsqrt() at hampaslupa() ngayon ay mas mabilis.
MIME::Base64
NEXT
Gumagana na ngayon ang pamana ng brilyante.
Net::Ping
PerlIO::scalar
Gumagana na ngayon ang pagbabasa mula sa mga non-string scalar (tulad ng mga espesyal na variable, tingnan ang perlvar).
mga podlator
Pod::LaTeX
PodParsers
Pod::Perldoc
Kumpletuhin ang muling pagsulat. Bilang isang side-effect, hindi na tumatanggi na mag-startup kapag pinapatakbo sa pamamagitan ng ugat.
Scalar::Util
Mga bagong utility: refaddr, isvstring, looks_like_number, set_prototype.
Nakapag-iimbak
Maaari na ngayong mag-imbak ng mga reference ng code (sa pamamagitan ng B::Deparse, kaya hindi palya).
mahigpit
Ang mga naunang bersyon ng mahigpit na pragma ay hindi sinuri ang mga parameter na tahasang naipasa
sa kanyang "pag-import" (gamitin) at "i-unimport" (hindi) na gawain. Nagdulot ito ng maling idyoma
bilang:
gumamit ng mahigpit na qw (@ISA);
@ISA = qw(Foo);
Gayunpaman, itinaas nito (marahil) ang maling pag-asa na ang mga mahigpit na ref, vars at
ipinapatupad ang mga sub (at ang @ISA ay kahit papaano ay "ipinahayag"). Ngunit ang mga mahigpit na ref,
vars, at subs ay hindi ipinapatupad kapag ginagamit ang maling idyoma na ito.
Simula sa Perl 5.8.1, sa itaas habilin maging sanhi ng pagtataas ng error. Ito ay maaaring maging sanhi
mga program na dati ay nagpapatupad ng tila tama nang walang mga babala at mga error na mabibigo
kapag tumakbo sa ilalim ng 5.8.1. Nangyayari ito dahil
gumamit ng mahigpit na qw (@ISA);
mabibigo na ngayon sa error:
Hindi kilalang 'mahigpit' (mga) tag na '@ISA'
Ang lunas sa problemang ito ay palitan ang code na ito ng tamang idyoma:
gumamit ng mahigpit;
gumamit ng vars qw(@ISA);
@ISA = qw(Foo);
Termino::ANSIcolor
Pagsubok:: Harness
Ngayon mas mapili tungkol sa dagdag o nawawalang output mula sa mga script ng pagsubok.
Pagsubok:: Higit pa
Pagsubok::Simple
Teksto::Balanse
Oras::HiRes
Paggamit ng nanosleep(), kung available, ay nagbibigay-daan sa paghahalo ng mga subsecond sleep sa mga alarm.
mga thread
Maraming mga pag-aayos, halimbawa para sa sumali () mga problema at pagtagas ng memorya. Sa ilang mga platform
(tulad ng Linux) na gumagamit ng glibc ang pinakamababang memory footprint ng isang ithread
nabawasan ng ilang daang kilobytes.
mga thread::shared
Maraming memory leaks ang naayos.
Unicode:: I-collate
Unicode:: Normalize
Win32::GetFolderPath
Win32::GetOSVersion
Ngayon ay nagbabalik ng karagdagang impormasyon.
Gamit Mga Pagbabago
Ang "h2xs" na utility ay gumagawa na ngayon ng mas modernong layout: Foo-Bar/lib/Foo/Bar.pm sa halip ng
Foo/Bar/Bar.pm. Gayundin, ang boilerplate test ay tinatawag na ngayon t/Foo-Bar.t sa halip ng t/1.t.
Ang Perl debugger (lib/perl5db.pl) ay malawak na ngayong naidokumento at may nakitang mga bug
habang ang pagdodokumento ay naayos na.
Ang "perldoc" ay muling isinulat mula sa simula upang maging mas matatag at mayaman sa tampok.
Ang "perlcc -B" ay gumagana na ngayon kahit na medyo mas mahusay, habang ang "perlcc -c" ay mas sira.
(Ang Perl compiler suite sa kabuuan ay patuloy na experimental.)
bago dokumentasyon
Ang perl573delta ay naidagdag upang ilista ang mga pagkakaiba sa pagitan ng (ngayon ay lipas na)
development release 5.7.2 at 5.7.3.
Ang perl58delta ay naidagdag: ito ang perldelta ng 5.8.0, na nagdedetalye ng mga pagkakaiba
sa pagitan ng 5.6.0 at 5.8.0.
perlartistic ay naidagdag: ito ay ang Artistic License sa pod format, na ginagawang mas madali
para sa mga module na sumangguni dito.
perlcheat ay naidagdag: ito ay isang Perl cheat sheet.
Ang perlgpl ay naidagdag: ito ay ang GNU General Public License sa pod na format, ginagawa ito
mas madali para sa mga module na sumangguni dito.
Ang perlmacosx ay naidagdag upang sabihin ang tungkol sa pag-install at paggamit ng Perl sa Mac OS X.
perlos400 ay naidagdag upang sabihin ang tungkol sa pag-install at paggamit ng Perl sa OS/400 PASE.
perlreref ay naidagdag: ito ay isang regular na expression na mabilis na sanggunian.
instalasyon at Configuration Pagpapabuti
Ang Unix standard na lokasyon ng Perl, /usr/bin/perl, ay hindi na ma-overwrite bilang default kung ito
umiiral. Ang pagbabagong ito ay napaka-maingat dahil napakaraming Unix vendor ang nagbibigay na ng a
/usr/bin/perl, ngunit sabay-sabay na maraming mga utility ng system ang maaaring depende sa eksaktong bersyon na iyon
ng Perl, kaya mas mabuting huwag itong i-overwrite.
Maaari na ngayong tukuyin ng isa ang mga direktoryo ng pag-install para sa site at vendor man at mga HTML na pahina, at
site at mga script ng vendor. Tingnan mo INSTALL.
Maaari na ngayong tukuyin ng isa ang isang direktoryo ng patutunguhan para sa pag-install ng Perl sa pamamagitan ng pagtukoy sa
DESTDIR variable para sa "make install". (Ang tampok na ito ay bahagyang naiiba sa
nakaraang "I-configure -Dinstallprefix=...".) Tingnan INSTALL.
Ang mga bersyon ng gcc 3.x ay nagpakilala ng isang bagong babala na nagdulot ng maraming ingay sa panahon ng Perl
compilation: "gcc -Ialreadyknowndirectory (babala: pagbabago ng order ng paghahanap)". Ang babalang ito
ay naiwasan na ngayon sa pamamagitan ng Configure weeding out tulad ng mga direktoryo bago ang compilation.
Ang isa ay maaari na ngayong bumuo ng mga subset ng Perl core modules sa pamamagitan ng paggamit ng Configure flags
"-Dnoextensions=..." at "-Donlyextensions=...", tingnan mo INSTALL.
Partikular sa platform pagpapahusay
Sa Cygwin Perl ay maaari na ngayong itayo gamit ang mga thread ("I-configure ang -Duseithreads"). Gumagana ito sa
parehong Cygwin 1.3.22 at Cygwin 1.5.3.
Sa mas bagong mga release ng FreeBSD, nabigo ang compilation ng Perl 5.8.0 dahil sa pagsubok na gamitin malloc.h,
na sa FreeBSD ay isang dummy file lamang, at isang nakamamatay na error na kahit subukang gamitin. Ngayon malloc.h
hindi ginagamit.
Ang Perl ay kilala na ngayong magtayo din sa Hitachi HI-UXMPP.
Ang Perl ay kilala na ngayong bumuo muli sa LynxOS.
Nag-i-install na ngayon ang Mac OS X gamit ang numero ng bersyon ng Perl na naka-embed sa mga pangalan ng direktoryo ng pag-install
para sa mas madaling pag-upgrade ng Perl na pinagsama-sama ng gumagamit, at ang mga direktoryo ng pag-install sa pangkalahatan
ay mas pamantayan. Sa madaling salita, hindi na sinisira ng default na pag-install ang Apple-
ibinigay ni Perl. Sa kabilang banda, gamit ang "Configure -Dprefix=/ usr"kaya mo na talaga
palitan ang Perl na ibinigay ng Apple (pakiusap be maingat).
Ginagawa na ngayon ng Mac OS X ang Perl bilang default. Ang pagbabagong ito ay ginawa pangunahin para sa mas mabilis
mga oras ng pagsisimula. Ang Perl na ibinigay ng Apple ay dynamic na naka-link at nakabahagi, at ikaw
maaaring paganahin ang pagbabahagi para sa iyong sariling Perl build sa pamamagitan ng "I-configure -Duseshrplib".
Ang Perl ay nai-port sa OS/400 PASE na kapaligiran ng IBM. Ang pinakamahusay na paraan upang bumuo ng isang Perl para sa
Ang PASE ay gagamit ng AIX host bilang isang cross-compilation na kapaligiran. Tingnan ang README.os400.
Isa pang opsyon sa cross-compilation ang idinagdag: ngayon ay nagtatayo si Perl sa OpenZaurus, isang
Pamamahagi ng Linux batay sa Mandrake + Embedix para sa Sharp Zaurus PDA. Tingnan ang
Cross/README file.
Ang Tru64 kapag gumagamit ng gcc 3 ay bumababa sa pag-optimize para sa toke.c sa "-O2" dahil sa dambuhalang
paggamit ng memorya gamit ang default na "-O3".
Ang Tru64 ay maaari na ngayong bumuo ng Perl gamit ang mga mas bagong Berkeley DB.
Ang pagbuo ng Perl sa WinCE ay higit na pinahusay, tingnan README.ce at README.perlce.
Napiling Kulisap Pag-aayos
Mga pagsasara, eval at mga leksikal
Maraming mga pag-aayos sa lugar ng mga hindi kilalang sub, lexical at pagsasara. Bagaman
ito ay nangangahulugan na ang Perl ay mas "tama" na ngayon, ito ay posible na ang ilang mga umiiral na code ay
break na nangyayari upang umasa sa maling pag-uugali. Sa pagsasagawa, hindi ito malamang maliban kung
ang iyong code ay naglalaman ng napakakomplikadong nesting ng mga hindi kilalang sub, eval at lexical.
Panlahat pag-aayos
Kung ang isang input filehandle ay may markang ":utf8" at nakita ni Perl ang ilegal na UTF-8 na pumapasok kapag ginagawa
" ", kung ang mga babala ay pinagana ang isang babala ay kaagad na ibibigay - sa halip na maging tahimik
tungkol dito at hindi nasisiyahan si Perl tungkol sa sirang data mamaya. (Ang layer na ":encoding(utf8)".
gumagana din sa parehong paraan.)
Ang binmode(SOCKET, ":utf8") ay gumana lamang sa input side, hindi sa output side ng
saksakan. Ngayon ito ay gumagana sa parehong paraan.
Para sa sinulid na Perls ang ilang mga function ng database ng system tulad ng getpwent() at getgrent() ngayon
palakihin ang kanilang buffer ng resulta nang pabago-bago, sa halip na mabigo. Nangangahulugan ito na sa mga site na may
maraming user at pangkat ang mga function ay hindi na nabigo sa pamamagitan ng pagbabalik lamang ng mga bahagyang resulta.
Ang Perl 5.8.0 ay aksidenteng nasira ang kakayahan para sa mga user na tukuyin ang kanilang sarili
uppercase<->maliit na titik Unicode mappings (tulad ng ina-advertise ng Camel). Ang tampok na ito ay may
naayos at mas mahusay ding naidokumento.
Sa 5.8.0 ito
$some_unicode .= ;
hindi gumana nang tama ngunit sa halip ay nasira ang data. Naayos na ito ngayon.
Ang mga nakatali na pamamaraan tulad ng FETCH atbp. ay maaari na ngayong ligtas na ma-access ang mga nakatali na halaga, ibig sabihin, nagreresulta sa a
recursive na tawag sa FETCH atbp. Tandaang putulin ang recursion, bagaman.
Sa pagsisimula, hinaharangan ng Perl ang signal ng SIGFPE dahil walang gaanong magagawa ang Perl tungkol dito.
Dati ang pagharang na ito ay may bisa din para sa mga programang isinagawa mula sa loob ng Perl. ngayon
Ipinapanumbalik ng Perl ang orihinal na nakagawiang pangangasiwa ng SIGFPE, anuman ito, bago tumakbo
mga panlabas na programa.
Ang mga linenumber sa Perl script ay maaaring mas malaki na ngayon sa 65536, o 2**16. (Ang mga script ng Perl ay may
palaging nagagawang maging mas malaki kaysa doon, ito lang ang linenumber para sa mga naiulat na error
at ang mga babala ay "nakabalot".) Habang ang mga script na malaki ay karaniwang nagpapahiwatig ng pangangailangan
pag-isipang muli ng kaunti ang iyong code, ang mga Perl na script ay umiiral, halimbawa bilang mga resulta mula sa nabuo
code. Ngayon ang mga linenumber ay maaaring pumunta sa 4294967296, o 2**32.
Partikular sa platform pag-aayos
Linux
· Gumagana muli ang pagtatakda ng $0 (na may ilang partikular na limitasyon na hindi gaanong magagawa ni Perl: tingnan
"$0" sa perlvar)
HP-UX
· Gumagana na ngayon ang pagtatakda ng $0.
VMS
· Sinusuri na ngayon ng configuration ang pagkakaroon ng "poll()", at ginagamit na ngayon ng IO::Poll ang
function na ibinigay ng vendor kung nakita.
· Ang isang bihirang paglabag sa pag-access sa Perl start-up ay maaaring mangyari kung ang Perl na imahe ay na-install
na may mga pribilehiyo o kung mayroong isang identifier na may katangian ng subsystem na nakatakda sa
listahan ng mga karapatan ng proseso. Alinman sa mga pangyayaring ito ang nag-trigger ng pagdumi sa code na iyon
naglalaman ng pointer bug. Naayos na ang faulty pointer arithmetic.
· Ang limitasyon sa haba sa mga halaga (hindi mga key) sa %ENV hash ay itinaas mula sa 255 byte
hanggang 32640 bytes (maliban kapag na-override ng PERL_ENV_TABLES setting ang default na paggamit ng
mga lohikal na pangalan para sa %ENV). Kung kinakailangan upang ma-access ang mga mahahabang halaga mula sa labas
Perl, magkaroon ng kamalayan na ang mga ito ay ipinatupad gamit ang listahan ng paghahanap ng mga lohikal na pangalan na nag-iimbak
ang halaga sa mga piraso, bawat 255-byte na piraso (hanggang 128 sa mga ito) ay isang elemento sa
listahan ng paghahanap. Kapag gumagawa ng isang lookup sa %ENV mula sa loob ng Perl, ang mga elemento ay pinagsama
sa iisang halaga. Ang umiiral na kakayahang partikular sa VMS na ma-access ang mga indibidwal na elemento
ng isang lohikal na pangalan ng listahan ng paghahanap sa pamamagitan ng syntax na $ENV{'foo;N'} (kung saan ang N ang listahan ng paghahanap
index) ay walang kapansanan.
· Gumagamit na ngayon ang pagpapatupad ng piping ng lokal kaysa sa pandaigdigang mga simbolo ng DCL para sa inter-
proseso ng komunikasyon.
· File::Find ay maaaring malito kapag nagna-navigate sa isang kamag-anak na direktoryo na ang pangalan
nabangga ng isang lohikal na pangalan. Ang problemang ito ay naitama sa pamamagitan ng pagdaragdag ng direktoryo
syntax sa mga kamag-anak na pangalan ng landas, kaya pinipigilan ang pagsasalin ng lohikal na pangalan.
Win32
· Isang memory leak sa tinidor () naayos na ang pagtulad.
· Ang return value ng ioctl() ang built-in na function ay aksidenteng nasira sa 5.8.0.
Ito ay naitama.
· Ang panloob na loop ng mensahe na pinaandar ng perl sa panahon ng pagharang minsan
nakialam sa mga mensaheng nasa labas ng Perl. Madalas itong nagresulta sa pagharang
mga operasyon na nagwawakas nang maaga o nagbabalik ng mga maling resulta, noong si Perl ay
pagpapatupad sa ilalim ng mga kapaligiran na maaaring makabuo ng mga mensahe sa Windows. Ito ay naging
naitama.
· Ang mga tubo at socket ay awtomatikong nasa binary mode na ngayon.
· Ang anyo ng apat na argumento ng piliin() hindi napanatili ang $! (errno) nang maayos kapag naroon
ay mga error sa pinagbabatayan na tawag. Naayos na ito ngayon.
· Ang problema ng "CR CR LF" ng ay naayos na, ang binmode(FH, ":crlf") ay isa nang epektibong
walang-op.
bago or Binago Diagnostics
Ang lahat ng mga babala na may kaugnayan sa pack() at i-unpack() ay ginawang mas nagbibigay-kaalaman at pare-pareho.
Binago "A sinulid lumabas habang %d mga thread ay tumatakbo"
Ang lumang bersyon
Lumabas ang isang thread habang tumatakbo pa rin ang %d iba pang mga thread
ay nakaliligaw dahil kasama rin sa "iba pa" ang thread na nagbibigay ng babala.
Inalis "Tangka sa limasin a pinaghihigpitan hash"
Hindi ilegal na i-clear ang isang pinaghihigpitang hash, kaya inalis ang babala.
bago "Ilegal pagpapahayag of hindi kilala subroutine"
Dapat mong tukuyin ang block ng code para sa "sub".
Binago "Invalid saklaw "%s" in transliterasyon operator"
Ang lumang bersyon
Di-wastong [] range na "%s" sa transliteration operator
ay mali lang dahil walang "[] ranges" sa tr///.
bago "Nawawala kontrol tangke pangalan in \c"
Nagpapaliwanag sa sarili.
bago "Bagong linya in kaliwa-makatwiran pisi para %s"
Ang mga puwang ng padding ay lilitaw pagkatapos ng bagong linya, na malamang na hindi kung ano ang mayroon ka
isip.
bago "Maaari karapatan sa pangunguna problema on bitwise %c operator"
Kung iisipin mo ito
$x at $y == 0
sinusubok kung ang bitwise AND ng $x at $y ay zero, magugustuhan mo ang babalang ito.
bago "Pseudo-hashes ay hindi na ginagamit"
Ang babalang ito ay dapat na nasa 5.8.0 na, dahil sila ay.
bago "basahin () on %s filehandle %s"
Ikaw ay hindi maaari basahin () (O sysread()) mula sa sarado o hindi nabuksang filehandle.
bago "5.005 mga thread ay hindi na ginagamit"
Ang babalang ito ay dapat na nasa 5.8.0 na, dahil sila ay.
bago "Nakatali nagbabago napalaya habang pa rin in gamitin"
May humila sa plug sa isang live na nakatali na variable, gumaganap nang ligtas si Perl sa pamamagitan ng pagpiyansa.
bago "Kay%s: ilegal paggawa ng mga mapa '%s'"
Isang iligal na user-defined Unicode casemapping ang tinukoy.
bago "Gamitin of napalaya halaga in pag-ulit"
May nagbago sa mga value na inuulit. Hindi ito maganda.
Binago Internals
Ang mga balitang ito ay mahalaga lamang sa iyo kung magsulat ka ng XS code o gusto mong malaman o na-hack
Perl internals (gamit ang Devel::Peek o alinman sa mga "B::" modules na binibilang), o gustong patakbuhin ang Perl
gamit ang opsyong "-D".
Ang mga halimbawa ng pag-embed ng perlembed ay nasuri upang maging napapanahon at pare-pareho:
halimbawa, ang tamang paggamit ng PERL_SYS_INIT3() at PERL_SYS_TERM().
Ang malawak na muling paggawa ng pad code (ang code na responsable para sa mga lexical na variable) ay naging
isinagawa ni Dave Mitchell.
Malawak na gawain sa v-strings ni John Peacock.
Haba ng UTF-8 at cache ng posisyon: upang mapabilis ang paghawak ng Unicode (UTF-8) scalars, isang
ipinakilala ang cache. Ang mga potensyal na problema ay umiiral kung ang isang extension ay lumalampas sa mga opisyal na API
at direktang binabago ang PV ng isang SV: hindi na-clear ang cache ng UTF-8 gaya ng nararapat.
Ang mga API na hindi na ginagamit sa Perl 5.8.0, tulad ng sv_2pv, sv_catpvn, sv_catsv, sv_setsv, ay muli
magagamit.
Ang ilang partikular na Perl core C API tulad ng cxinc at regatom ay hindi na available sa code
sa labas ng Perl core ng Perl core extension. Ito ay sinadya. Hindi sila
dapat ay magagamit sa mas maikling mga pangalan, at kung ang iyong aplikasyon ay nakasalalay sa kanila,
dapat kang (mahiya at) makipag-ugnayan sa perl5-porters para talakayin kung ano ang mga tamang API.
Ang ilang partikular na Perl core C API tulad ng "Perl_list" ay hindi na available nang wala ang kanilang "Perl_"
unlapi. Kung ang iyong XS module ay huminto sa paggana dahil ang ilang mga function ay hindi mahanap, sa marami
kaso ang isang simpleng pag-aayos ay ang pagdaragdag ng prefix na "Perl_" sa function at sa konteksto ng thread
"aTHX_" bilang ang unang argumento ng function na tawag. Ganito rin dapat palagi
nagawa na: ang pagpapaalam sa mga form na Perl_-less na tumagas mula sa core ay isang aksidente. Para sa
mas malinis na pag-embed maaari mo ring pilitin ito para sa lahat ng mga API sa pamamagitan ng pagtukoy sa oras ng pag-compile ng cpp
tukuyin ang PERL_NO_SHORT_NAMES.
Perl_save_bool() ay naidagdag.
Ang mga bagay ng Regexp (mga nilikha gamit ang "qr") ay mayroon na ngayong S-magic kaysa sa R-magic. Naayos na ito
regexps ng form /...(??{...;$x})/ para hindi na balewalain ang mga pagbabagong ginawa sa $x. Ang S-magic
iniiwasang i-drop ang caching optimization at ang paggawa ng (??{...}) ay mabagal na pagbuo
(at dahil dito ay walang silbi). Tingnan din ang "Magic Variables" sa perlguts. Regexp::Kopya noon
apektado ng pagbabagong ito.
Ang Perl internal debugging macros DEBUG() at DEB() ay pinalitan ng pangalan sa PERL_DEBUG() at
PERL_DEB() upang maiwasan ang mga salungatan sa namespace.
"-DL" inalis (ang leaktest ay nasira at hindi suportado sa loob ng maraming taon, gumamit ng alternatibo
pag-debug ng mga malloc o mga tool tulad ng valgrind at Purify).
Idinagdag ang verbose modifier na "v" para sa "-DXv" at "-Dsv", tingnan ang perlrun.
bago Mga Pagsubok
Sa Perl 5.8.0 mayroong humigit-kumulang 69000 na magkakahiwalay na pagsubok sa humigit-kumulang 700 mga file ng pagsubok, sa Perl 5.8.1
mayroong humigit-kumulang 77000 na magkakahiwalay na pagsubok sa humigit-kumulang 780 na mga file ng pagsubok. Ang eksaktong mga numero ay nakasalalay sa
ang pagsasaayos ng Perl at sa platform ng operating system.
Kilala Mga Problema
Ang hash randomization na binanggit sa "Incompatible Changes" ay tiyak na may problema: ito
ay magigising sa mga natutulog na bug at mag-aalis ng masasamang pagpapalagay.
Kung gusto mong gumamit ng mod_perl 2.x sa Perl 5.8.1, kakailanganin mo ng mod_perl-1.99_10 o mas mataas.
Ang mga naunang bersyon ng mod_perl 2.x ay hindi gumagana sa mga randomized na hash. (mod_perl 1.x
gumagana nang maayos.) Kakailanganin mo rin ang Apache::Test 1.04 o mas mataas.
Marami sa mga mas bihirang platform na gumana ng 100% o medyo malapit dito sa perl 5.8.0 ay mayroong
medyo hindi naasikaso dahil ang kanilang mga maintainer ay naging abala kamakailan,
at samakatuwid ay magkakaroon ng higit pang mga pagkabigo sa mga platform na iyon. Kasama sa mga naturang platform ang Mac
OS Classic, IBM z/OS (at iba pang EBCDIC platform), at NetWare. Ang pinakakaraniwang Perl
ang mga platform (tulad ng Unix at Unix, mga platform ng Microsoft, at VMS) ay may sapat na malaking pagsubok at
ekspertong populasyon na mahusay ang kanilang ginagawa.
nakatali mga hash in skalar kaugnay na kahulugan
Ang mga nakatali na hash ay kasalukuyang hindi nagbabalik ng anumang bagay na kapaki-pakinabang sa scalar na konteksto, halimbawa kung kailan
ginamit bilang mga pagsubok sa boolean:
kung (%tied_hash) { ... }
Ang kasalukuyang walang katuturang gawi ay palaging nagbabalik ng mali, hindi alintana kung ang
Ang hash ay walang laman o may mga elemento.
Ang ugat na dahilan ay walang interface para sa mga nagpapatupad ng mga nakatali na hash sa
ipatupad ang pag-uugali ng isang hash sa scalar na konteksto.
Net::Ping 450_serbisyo at 510_ping_udp pagkabigo
Ang mga subtest 9 at 18 ng lib/Net/Ping/t/450_service.t, at ang subtest 2 ng
Maaaring mabigo ang lib/Net/Ping/t/510_ping_udp.t kung mayroon kang hindi pangkaraniwang setup ng networking. Para sa
halimbawa sa huling kaso sinusubukan ng pagsubok na magpadala ng UDP ping sa IP address
127.0.0.1.
B::C
Ang C-generating compiler backend B::C (ang frontend ay "perlcc -c") ay higit pa
nasira kaysa dati dahil sa malawak na pagbabago ng variable na leksikal. (Ang mabuti
balita ay mas mahusay ang B::Bytecode at ByteLoader kaysa dati.)
Platform tiyak Mga Problema
EBCDIC Platform
Ang IBM z/OS at iba pang mga platform ng EBCDIC ay patuloy na nagiging problema tungkol sa suporta sa Unicode.
Maraming mga pagsubok sa Unicode ang nilaktawan kung kailan talaga dapat ayusin ang mga ito.
Cygwin 1.5 problema
Sa Cygwin 1.5 ang io/tell at op/sysio ang mga pagsubok ay may mga pagkabigo para sa ilang hindi pa alam na dahilan.
Sa 1.5.5 ang mga thread na sumusubok sa stress_cv, stress_re, at stress_string ay nabigo maliban kung ang
Ang environment variable na PERLIO ay nakatakda sa "perlio" (na ginagawang din ang pagbagsak ng io/tell
malayo).
Ang Perl 5.8.1 ay bumubuo at gumagana nang maayos sa Cygwin 1.3: kasama ang (uname -a) "CYGWIN_NT-5.0 ...
1.3.22(0.78/3/2) 2003-03-18 09:20 i686 ..." isang 100% "gumawa ng pagsubok" ay nakamit gamit ang
"I-configure ang -des -Duseithreads".
HP-UX: HP cc babala tungkol sa sendfile at sendpath
Sa ilang partikular na paglabas ng HP C compiler (hal. B.11.11.02) makakakuha ka ng maraming babala tulad nito
(mga linya na nakabalot para sa mas madaling pagbabasa):
cc: "/usr/include/sys/socket.h", linya 504: babala 562:
Muling pagdedeklara ng "sendfile" na may ibang specifier ng klase ng storage:
Ang "sendfile" ay magkakaroon ng panloob na linkage.
cc: "/usr/include/sys/socket.h", linya 505: babala 562:
Muling pagdedeklara ng "sendpath" na may ibang specifier ng klase ng storage:
Ang "sendpath" ay magkakaroon ng panloob na linkage.
Ang mga babala ay lumalabas kapwa sa panahon ng pagbuo ng Perl at sa ilang partikular na pagsubok sa lib/ExtUtils
na humihiling sa C compiler. Ang babala, gayunpaman, ay hindi seryoso at maaaring balewalain.
IRIX: t/uni/tr_7jis.t kasinungalingan nanghihina
Ang pagsubok na t/uni/tr_7jis.t ay kilala na nag-uulat ng pagkabigo sa ilalim ng 'gumawa ng pagsubok' o ang test harness
na may ilang partikular na release ng IRIX (hindi bababa sa IRIX 6.5 at MIPSpro Compiler Bersyon 7.3.1.1m),
ngunit kung tumakbo nang manu-mano ang pagsubok ay ganap na pumasa.
Kapote OS X: hindi usemymalloc
Ang Perl malloc ("-Dusemymalloc") ay hindi gumagana sa Mac OS X. Hindi ito iyon
seryoso, gayunpaman, dahil ang katutubong malloc ay gumagana nang maayos.
Tru64: Hindi sinulid gagawa sa GNU cc (gcc)
Sa mga pinakabagong release ng Tru64 (hal. v5.1B o mas bago) hindi magagamit ang gcc para mag-compile ng
sinulid Perl (-Duseithreads) dahil ang system " "Hindi alam ng file ang tungkol sa
gcc.
Win32: sysopen, sysread, syswrite
Sa paglabas ng 5.8.0, sysopen()/sysread()/syswrite() huwag kumilos tulad ng dati
5.6.1 at mas nauna patungkol sa "text" mode. Ang mga built-in na ito ngayon ay palaging gumagana
"binary" mode (kahit na sysopen() naipasa ang O_TEXT flag, o kung binmode() ay ginamit sa
ang file handle). Tandaan na ang isyung ito ay dapat lamang gumawa ng pagkakaiba para sa mga file ng disk, bilang
ang mga socket at pipe ay palaging nasa "binary" mode sa Windows port. Tulad ng pag-uugali na ito
ay kasalukuyang itinuturing na isang bug, ang katugmang gawi ay maaaring muling ipakilala sa hinaharap
palayain. Hanggang noon, ang paggamit ng sysopen(), sysread() at syswrite() ay hindi suportado para sa
"text" mode operations.
Hinaharap Mga Direksyon
Ang mga sumusunod na bagay maaari mangyari sa hinaharap. Ang unang pampublikong available na mga release na may
ang mga katangiang ito ay ang paglalabas ng developer ng Perl 5.9.x, na nagtatapos sa Perl
5.10.0 release. Ito ang aming pinakamahusay na mga hula sa ngayon: inilalaan namin ang karapatan na
pag-isipang muli.
· Ang PerlIO ay magiging The Default. Sa kasalukuyan (sa Perl 5.8.x) ang stdio library ay nananatili pa rin
ginagamit kung sa tingin ni Perl ay makakagamit ito ng ilang partikular na trick para magawa ang stdio Talaga mabilis. Para sa
mga release sa hinaharap ang layunin namin ay pabilisin pa ang PerliO.
· Isang bagong tampok na tinatawag paninindigan magiging available. Nangangahulugan ito na ang isa ay maaaring magkaroon ng code
tinatawag na mga assertion na nawiwisik sa code: kadalasan ay na-optimize ang mga ito, ngunit magagawa nila
paganahin gamit ang opsyong "-A".
· Isang bagong operator na "//" (defined-or) ang magiging available. Nangangahulugan ito na ang isa ay magagawa
sabihin
$a // $b
sa halip ng
tinukoy $a ? $a : $b
at
$c //= $d;
sa halip ng
$c = $d maliban kung tinukoy $c;
Ang operator ay magkakaroon ng parehong precedence at associativity bilang "||". Isang source code
patch laban sa Perl 5.8.1 source ay magiging available sa CPAN bilang
authors/id/H/HM/HMBRAND/dor-5.8.1.diff.
· Ang "unpack()" ay magiging default sa pag-unpack ng $_.
· Sisiyasatin ang iba't ibang diskarte sa Copy-On-Write sa pag-asang mapabilis ang Perl.
· Ang CPANPLUS, Inline, at Module::Build ay magiging mga pangunahing module.
· Ang kakayahang sumulat ng totoong lexically scoped pragmas ay ipakikilala.
· Magpapatuloy ang trabaho sa bytecompiler at byteloader.
· Ang mga v-string na kasalukuyang umiiral ay naka-iskedyul na hindi na ginagamit. Ang v-less na anyo
(1.2.3) ay magiging isang "version object" kapag ginamit sa "use", "require", at $VERSION.
Ang $^V ay magiging isang "version object" din kaya ang printf("%vd",...) construct ay hindi na
kailangan. Ang v-ful na bersyon (v1.2.3) ay magiging lipas na. Ang katumbas ng
string at v-strings (hal na ang kasalukuyang 5.8.0 ay katumbas ng "\5\8\0") ay mawawala.
Doon maaari be hindi deprecation babala para v-strings, bagaman: medyo mahirap matukoy
kapag ang mga v-string ay ginagamit nang ligtas, at kapag hindi.
· 5.005 na mga Thread ay Aalisin
· Ang $* Variable ay Aalisin (ito ay matagal nang hindi na ginagamit)
· Aalisin ang mga Pseudohashes
Pag-uulat Bug
Kung nakita mo ang sa tingin mo ay isang bug, maaari mong suriin ang mga artikulong kamakailang nai-post sa
comp.lang.perl.misc newsgroup at ang database ng perl bug sa http://bugs.perl.org/ . Doon
maaari ding impormasyon sa http://www.perl.com/ , 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. Maaari kang mag-browse at maghanap sa Perl 5 na mga bug sa
http://bugs.perl.org/
Gamitin ang perl581delta online gamit ang mga serbisyo ng onworks.net