Programmiersprache Perl 5.38 führt Class-Feature ein
Mit der neuen Version von Perl beginnt der schrittweise Einzug des seit zwei Jahren angekündigten Objektsystems Corinna.
- Herbert Breunung
Im Namen der Perl Porter hat Ricardo Signes Perl 5.38 freigegeben. Die Version bringt neben dem noch experimentellen Class-Feature drei neue Spezialvariablen sowie einige Verbesserungen im Bereich der Spezialblöcke (Phaser) und der regulären Ausdrücke.
Über allen Neuerungen thront die Einführung des seit zwei Jahren angekündigten Objektsystems (Projektname Corinna). Damit beginnen Klassen mit dem Schlüsselwort class
und Methoden mit method
. field
definierte Attribute sowie deren Zugriffs- und Initialisierungsmethoden. Das ermöglicht erstmals in Perl 5 echte private Attribute, die dezentral mit dem Objekt gespeichert werden. Die Grundlage ist eine ebenfalls neu geschaffene interne Datenstruktur.
All dies und mehr aktiviert später die Anweisung use feature 'class';
. Für 5.38 und mindestens 5.40 wird ein use experimental 'class';
nötig sein, da das Perl Steering Council im RFC-Prozess mehr Funktionen angenommen hat, als in 5.38 eingebaut werden konnten. Wie bei Perl üblich wird Corinna erst den experimentellen Status verlassen, wenn keine syntaktischen Änderungen mehr anstehen.
Eine umfangreiche Übersicht zu den implementierten und geplanten Fähigkeiten erscheint in Kürze in einem separaten Artikel auf heise Developer. Andere Neuerungen wie Signaturen lassen sich unabhängig vom Class-Feature aktivieren, und die alte Objektorientierung mit bless
bleibt weiterhin bestehen.
Neben dem turnusmäßigen Update auf Unicode 15 gibt es jetzt die Umgebungsvariable $ENV{PERL_RAND_SEED}
. Sie zu setzen entspricht einem Aufruf von srand
mit dem Inhalt der Variable. Damit lässt sich beispielsweise Code testen, der den internen Zufallsgenerator verwendet.
Die Variable ${^LAST_SUCCESSFUL_PATTERN}
enthält den letzten Fund eines beliebigen regulären Ausdruckes im aktuellen Geltungsbereich. Beispielsweise ersetzt
if (m/foo/ || m/bar/) {
s/${^LAST_SUCCESSFUL_PATTERN}/PQR/;
}
entweder foo
oder bar
mit PQR
, abhängig davon, was in $_
gefunden wurde. Bisher war das Vorgehen zwar implizit durch Auslassen der Spezialvariable möglich, war aber schlechter nachvollziehbar.
Wer der Variable %{^HOOK}
CODE
-Referenzen zuweist, kann das Verhalten von Perl bei Ereignissen wie dem Laden eines Moduls erweitern.
Das mit Version 5.36 der Programmiersprache eingeführte Pragma builtin
bekommt im aktuellen Release die importierbaren Routinen is_tainted
und export_lexically
. Letztere stellt den Mechanismus zur Verfügung, den builtin
selbst zum Exportieren von Symbolen verwendet. Im Gegensatz zum Standardmodul Exporter tauchen dabei nicht die (seltenen) Kompilierzeitprobleme auf.
Die alte Trennung für Paketnamen '
, das Schlüsselwort switch
und der Smart-Match-Operator ~~
gelten nun als deprecated (veraltet). Sie werden in Perl 5.42 nicht mehr vorhanden sein.
Weiteren Details, Geschwindigkeitsgewinne und Sicherheitsverbesserungen finden sich im perldelta.
Siehe auch:
- Perl bei heise Download
(rme)