Heise 16.07.2026
09:03 Uhr

Programmiersprache Perl 5.44: Benannte Parameter kommen und goto wird gezähmt


Das aktuelle Perl geht einen weiteren Schritt in Richtung moderner Objektorientierung. Außerdem schließt Perl 5.44 drei Sicherheitslücken.

Programmiersprache Perl 5.44: Benannte Parameter kommen und goto wird gezähmt

Das aktuelle Perl 5.44 erlaubt es, innerhalb von Signaturen benannte Parameter mit zugehörigen Default-Werten zu deklarieren:

Wie in Raku (ehemals Perl 6) mit dem Präfix : vor der Sigil gekennzeichnet. Dieser Doppelpunkt ist nicht Teil des Variablennamens, und beim Aufruf muss man die Sigil weglassen.

Der Default-Wert wird dem Parameter innerhalb der Signatur zugewiesen, was ihn gleichzeitig als optional deklariert. Das gilt gleichermaßen für benannte und positionale Parameter. Wenn beide Arten kombiniert werden, müssen beim Methodenaufruf immer zuerst die positionalen Argumente angegeben werden.

Benannte Parameter werden bis mindestens Perl 5.46 experimentell bleiben und erfordern deshalb diesen Zusatz:

Neben einer langen Liste an behobenen Fehlern und einigen Performanceverbesserungen wurden auch drei Sicherheitslücken geschlossen, die einen Pufferüberlauf auslösen konnten.

Die Lücke CVE-2026-8376 betrifft reguläre Ausdrücke, die aus alternativen Unicode-Zeichenketten bestehen. Mit CVE-2026-13221 war das Verhalten der Befehle pack und unpack betroffen. CVE-2026-57432 schlug nur bei äußerst großen regulären Ausdrücken zu, die aus mehr als 65.000 alternativen Teilausdrücken bestehen.

Bemerkenswert ist das endgültige Abschalten einer Funktionsweise, die bereits seit Perl 5.12 als veraltet gekennzeichnet ist. Nun ist es endlich nicht mehr gestattet, mittels goto in Schleifen, Subroutinen und ähnliche funktionstragende Blöcke hineinzuspringen.

Eine Übersicht mit allen behobenen Fehlern, Dokumentationsänderungen, Fehlermeldungen und weiteren Interna ist in der Dokumentation zum aktuellen Release einsehbar.

Der Absatz zu den Default-Werten bei benannten Parametern wurde umformuliert, da er vorher bezüglich der Optionalität nicht korrekt war.

(rme)