Naujasis Perlas
Šiandien pilnai perėjau prie naujojo Perl
5.8.1. Persikompiliavau mod_perl
ir panašiai, tad ši
svetainė veikia būtent jau su naujuoju Perlu.
Nors ir yra angliška perldelta, štai
pagrindiniai Perl pokyčiai nuo 5.8.0 versijos:
-
Asociatyviųjų masyvų atsitiktinės tvarkos pagerinimas.
Anksčiau asociatyviųjų masyvų (hešų) raktai būdavo saugomi ne
visai atsitiktine tvarka, o dėl to atsirasdavo šiokių tokių saugumo
problemų (ten viskas labai sudėtinga, bet idėja tame, jog galima kažkaip
programėlei padaryti DOS ataką).
Dėl šio pagerinimo gali neveikti kai kurios programos, kurios būtent
priklausė nuo ne visai atsitiktinės hešų tvarkos (Tarkim turėtų
skirtisData::Dumper
modulio išvedamų asociatyvaus masyvo
raktų tvarka) -
UTF-8
flagas nebenustatomas byloms
automatiškai, net jei lokalė ir sako jog viskas yraUTF-8
(Atrodo lokalės dažnai pervertina savo galimybes, ir dėl to būna
problemų) -
v-stings
(versijų eilutės) prieš=>
traktuojamos kaip paprastos simbolių eilutės. Tad šitas:
%h = ( v65 => 42 );
Iki 5.8.1 reiškė:
```
%h = ( 'A' => 42 );
O dabar reiškia:
```
%h = ( ‘v65’ => 42 );
Kaip turbūt ir buvo tikimasi.
* Vėl galima naudotis „nesaugiais“ signalais. Praeitoje
Perlo versijoje signalai (SIGHUP, SIGKILL ir panašiai) buvo padaryti
_saugiais_, t.y. jų vykdymas buvo atidedamas iki paskutiniės
operacijos užbaigimo, nes ne laiku atkeliavęs signalas galėjo nutraukti
programą netinkamoje vietoje ir „nulaužti“ visą programą.
Dabar galima naudoti tiek saugius signalus, tiek nesaugius, užtenka
atitinkamai nustatyti aplinkos kintamąjį `PERL_SIGNALS`
* Dabar galima pririšti su `tie()` ir masyvus su
neigiamais indeksais
* Dabar veikia ir netiesioginė lokalizacija:
```
local ${$x}
local @{$x}
local %{$x}
-
Unikodo lentelės duomenų bazė atnaujinta iki 4.0.0 versijos (kuri buvo išleista visai neseniai)
-
Keletas dalykų kurių bus atsisakyta kitoje versijoje, ir dėl to atsirado naujų perspėjimų:
$*
kintamasis,
5.005 versijos stiliaus threadai, pseudohešai. -
Vienas svarbiausių pagerinimų, kuris užbaigs daugelį metų trukusius šventuosius karus
map vs for
:map
nuo šiol
supranta savo kontekstą ir nekonstruoja sąrašo grąžinimui, jei jo nėra kam grąžinti. Tai žymiai pagreitinamap
vartojimą tuščiame
kontekste (tarkimmap { print "$_\n" } @a
) -
Daug klaidų pataisyta
MAth::BigInt
modulyje. Ypač dideli greičio patobulinimai. -
Visiškai perrašytas
perldoc
-
Kai kurie pataisymai threaduose, pataisyta atminties nutekėjimo klaidos Linuxe
-
Pridėta dokumentacija:
perlcheat
,perlreref
(lietuviškas vertimas). -
Cygwin aplinkoje dabar veikia threadai.
-
Naujos platformos, kuriose veikia Perl: Hitachi HI-UXMPP, LynxOS, IBM’s OS/400 PASE, OpenZaurus (Sharp Zaurus PDA). Vis dar nėra PalmOS :/