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.
Videos by heise
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)