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.
- Rainald Menge-Sonnentag
- Herbert Breunung
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.
Genau mein Typ
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.
Vernünftig verkettete Vergleiche
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 )
Reguläre Ausdrücke und Unicode
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)