Perl 5.44.0 iznāca 16. jūlijā, un tā lielākais jaunums ir spēja funkcijas parakstā deklarēt parametrus, ko izsauc pēc nosaukuma. Līdz šim Perl paraksti pieņēma tikai pozicionālus argumentus — vērtības nāca pēc kārtas, un izsaucējam bija jāatceras, kura vieta ko nozīmē. Tagad var uzrakstīt funkciju, kurai vērtības padod pāros nosaukums => vērtība.
Nosauktu parametru atzīmē ar kolu pirms sigila. Oficiālais perldelta rāda šādu piemēru: funkciju deklarē kā sub make_colour ( :$red = 0, :$green = 0, :$blue = 0 ) { ... } un izsauc kā make_colour( red => 1.0, blue => 0.5 ).
Kā tas strādā
Kols nav daļa no mainīgā vārda — tas tikai pasaka parserim, ka parametrs ir nosaukts. Izsaucot funkciju, kolu neraksta: padod atslēgu bez tā. Nosauktie parametri vienmēr ir neobligāti, un tiem nav obligāti jādod noklusējuma vērtība. Ja parakstā ir gan pozicionāli, gan nosaukti parametri, pozicionālie jāliek pirmie.
Sintakse strādā tikai pēc tam, kad failā ievieto use v5.44; un use experimental 'signature_named_parameters';. Perl komanda nosauktos parametrus atstāj eksperimentālus vismaz līdz Perl 5.46, tāpēc bez use experimental kompilators izdos brīdinājumu. Risinājums seko Raku pieejai — Raku (agrāk Perl 6) nosauktos parametrus izmanto jau gadiem, un Perl 5 tos aizguva ar dizaina priekšlikumu PPC0024.
Perl jaunas valodas iespējas ilgi tur aiz use experimental slēdža, kamēr tās izmēģina reālā kodā un vēro, vai sintakse un uzvedība nemainīsies. Brīdinājums bez slēdža ir tīšs — tas atgādina, ka nosaukto parametru izturēšanās nākamajās versijās vēl var mainīties. Kad iespēja būs nostabilizējusies, to varēs lietot bez slēdža, tāpat kā pozicionālie paraksti strādā jau tagad.
Kāpēc tas nozīmīgi
Paraksti Perl parādījās 2014. gadā ar versiju 5.20, arī toreiz kā eksperimentāls papildinājums. Līdz šim tie ļāva deklarēt tikai pozicionālus argumentus. Kad funkcijai bija daudz izvēles parametru, izstrādātāji parasti ķērās pie vecā parauga — pieņēma vienu hešu ar my %args = @_; un paši izvilka no tā vērtības. Tas darbojas, taču kļūda argumenta vārdā netiek pamanīta līdz izpildes brīdim, un pašā parakstā nav redzams, ko funkcija sagaida.
Nosauktie parametri neprasa noklusējuma vērtību un vienmēr ir neobligāti.
Ar jauno sintaksi funkcijas paraksts kļūst par tās dokumentāciju: no vienas rindas ir skaidrs, kādas atslēgas funkcija saprot. Skaidrāka kļūst arī izsaukuma vieta. make_colour( blue => 0.5 ) pats pasaka, ka 0,5 attiecas uz zilo krāsu, kamēr make_colour( 0, 0, 0.5 ) liek atvērt funkcijas definīciju, lai saprastu, kura nulle ir kura. Perl arī samazinājis parakstu apstrādes izmaksas izpildes laikā, tāpēc funkcijas ar parakstu vairs nemaksā tik daudz, cik agrāk.
Vairākmainīgo foreach ar atsaucēm
Otrs stabilizētais jaunums apvieno divas agrākas iespējas: atsauču aizstājējus (refaliasing, no 5.22) un vairākmainīgo foreach (no 5.36). Vienā ciklā tagad var izvilkt heša atslēgu un uzreiz aizstāt tās vērtību ar masīva atsauci — piemēram, foreach my ( $key, @items ) ( %hash ) { ... } iet cauri hešam, kurā katra vērtība ir masīva atsauce, un @items tieši norāda uz šo masīvu, nevis uz tā kopiju.
Abas atsevišķās iespējas — refaliasing un declared_refs — joprojām paliek eksperimentālas, taču to kombinācija tagad ir atļauta.
Kas vēl mainījies
Komanda goto vairs nedrīkst ielēkt cikla vai cita bloka iekšpusē no ārpuses. Šī uzvedība bija atzīta par novecojušu kopš Perl 5.12; versijā 5.44 tā met kļūdu, nevis tikai brīdina. Perl 5.44 arī atbalsta Unicode 17.0.
Ātrumu skāra vairāki sīki, bet praktiski labojumi. Vienkārša veselo skaitļu aritmētika — saskaitīšana, atņemšana un reizināšana, kas nepārsniedz robežas — sistēmās ar atbilstošu kompilatora atbalstu darbojas ātrāk. Heša veidošana no kompilēšanas laikā zināmām teksta atslēgām arī paātrināta.
Trīs drošības caurumi aizvērti
Laidiens salabo trīs bufera pārpildes ievainojamības. Heise uzskaita CVE-2026-8376 (regulārās izteiksmes ar alternatīvām Unicode virknēm), CVE-2026-13221 (pack un unpack uzvedība) un CVE-2026-57432 (regulārā izteiksme ar vairāk nekā 65 000 alternatīvām apakšizteiksmēm). Visi trīs varēja sabojāt atmiņu, apstrādājot uzbrucēja sagatavotus datus, tāpēc atjaunināšana uz 5.44 ir vērts arī tiem, kuri jaunos parakstus neizmantos.
Perl attīstības laidieni nēsā nepāra numurus (5.43.x), stabilie — pāra (5.44). Iepriekšējais stabilais laidiens Perl 5.42 iznāca 2025. gada vidū, tā ka nosauktie parametri ir pirmā lielā valodas izmaiņa aptuveni gada laikā. Pilns izmaiņu saraksts ir perl5440delta dokumentā, un lielākā daļa distributīvu jauno versiju piedāvās pēc dažām nedēļām, kad to iepakos savos repozitorijos.
Komentāri
Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.