Programmiersprache: Perl 5.32 verkettet Vergleiche und wandert zu GitHub

Das aktuelle Release der Programmiersprache vereinfacht Vergleiche und führt einen neuen Operator zum Testen der Klassenzugehörigkeit ein.

Lesezeit: 1 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 29 Beiträge
Von

Gut ein Jahr nach dem Release von Perl 5.30 ist nun Version 5.32 der Programmiersprache erschienen. Die Perl Porters, wie die freiwilligen Programmierer heißen, die sich um die Weiterentwicklung der Sprache kümmern, haben mit isa einen neuen Operator eingeführt. Außerdem lassen sich Vergleiche einfacher verketten, und Perl verarbeitet Unicode 13.

Von organisatorischer Seite ist zudem erwähnenswert, dass die Weiterentwicklung der Programmiersprache ab sofort auf GitHub stattfindet. Security-Probleme verwalten die Perl Porters weiterhin über perlsec, aber Entwickler sollten alle anderen Bugs als GitHub Issue im offiziellen Perl5-Repository melden.

Der neue Klasseninstanz-Operator isa testet, ob ein Objekt eine Instanz einer Klasse oder einer davon abgeleiteten Klasse ist. Der rechte Operand darf sowohl ein direkter Klassenname als auch ein Ausdruck sein:

if( $obj isa Some::Class ) { ... }
if( $obj isa "Different::Class" ) { ... }
if( $obj isa $name_of_class ) { ... }

Wenn der linke Operand nicht definiert oder kein über bless bestimmtes Perl-Objekt ist, liefert die Operation immer false zurück. Derzeit ist der isa-Operator noch als experimentell gekennzeichnet.

Auf dem Gebiet sind für die nächste Version weitreichendere Erweiterungen zu erwarten, da auf dem diesjährigen, deutschem Perl-Workshop Curtis "Ovid" Poe mit Cor eine neues Objektsystem vorgestellt hat, das in den Kern einfließen soll.

Perl 5.32 erlaubt zudem das einfache Verketten von Vergleichsoperatoren. Voraussetzung dafür ist, dass die Operatoren dieselbe Priorität haben. Die Rangfolge ist in der Perl-Dokumentation zu finden. Der verkettete Vergleich

if ( $a >= $b > $c ) {...}

entspricht der über den separaten logischen AND-Operator verknüpften Schreibweise

if ( $a >= $b && $b > $c )

Die Alpha Assertions gelten nicht mehr als experimentell. Damit reicht ein use v5.32;, um Regex-Gruppen mit besonderer Funktion eine sprechende Bezeichnung zu verleihen. Das gilt auch für die mit Perl 5.28 eingeführten Script-Run-Gruppen mit garantiert einheitlicher Kodierung.

Innerhalb von regulären Ausdrücken ließen sich Unicode-Zeichen bisher per Namen nur durch \N{...} angeben. Perl 5.32 fügt die Schreibweise \p{name=...} hinzu, die das Einsetzen und Interpolieren von Variablen erlaubt.

Das aktuelle Release ist voll auf Unicode 13 ausgelegt und kennt nun die in Revision 22 eingeführte Änderung von IdentifierType, Identifier Type oder Type zu Identifier_Type und die Umstellung von IdentifierStatus, Identifier Status oder Status zu Identifer_Status.

Außerdem haben die Perl Porters die drei CVEs 2020-10543, 2020-10878 und 2020-12723 behoben, die Überläufe beim Ausführen regulärer Ausdrücke provoziert haben. Dasselbe gilt für den aktuellen Zweig 5.30.3, der bereits zum Monatsanfang erschienen ist.

Weitere Neuerungen von Perl 5.32 sowie Performance-Optimierungen unter anderem beim Sortieren numerischer Werte über sort lassen sich den Release Notes entnehmen.

(rme)