Auf der heute stattfindenden virtuellen Konferenz der Perl-Entwickler das Projekt Perl 7, das nahtlos die Entwicklung der Perl-5-Reihe fortsetzen wird, ohne radikale Änderungen vorzunehmen. Perl 7 wird ähnlich wie die Veröffentlichung , mit Ausnahme anderer Standardeinstellungen, die besser den modernen Entwicklungspraktiken entsprechen. Ansonsten bleibt Perl 7 dasselbe wie Perl 5 und behält die Kompatibilität mit zuvor entwickelten Anwendungen.
Eine signifikante Änderung der Versionsnummer wird eine Art Trennlinie darstellen, um zu einer neuen Modellierung des Funktionsausbaus der Sprache Perl zu wechseln, ohne die Rückwärtskompatibilität wesentlich zu beeinträchtigen.
Es wird angenommen, dass die Einführung von Perl 7 dazu beitragen wird, neue Entwickler für Perl zu gewinnen und den Prozess der Hinzufügung bedeutender neuer Funktionen zur Sprache zu erleichtern, während die Kompatibilität mit dem Codebestand bestehender Projekte gewahrt bleibt. Die Nummer 7 wurde gewählt, da Perl 6 bei der Entwicklung der Sprache verwendet wurde, die jetzt unter dem separaten Namen Raku bekannt ist. Die erste Version von Perl 7 wird im nächsten Jahr erwartet. Die Version Perl 5.32 wird die letzte in der Serie Perl 5 sein und soll 5 bis 10 Jahre lang unterstützt werden.
Die auffälligste Änderung in Perl 7 wird die standardmäßige Aktivierung des Modus „„ sein, der eine strenge Überprüfung der Variablendeklarationen, der Verwendung von Zeigern und der Zuweisung von Unterprogrammen vorschreibt. Die Verwendung von „use strict“ gilt als best practice und wird von den meisten Entwicklern angewendet. Auch die Verarbeitung von Warnungen wird standardmäßig aktiviert („«).
In Perl 7 plant man zudem, einige bereits existierende experimentelle Funktionen zu stabilisieren und standardmäßig zu integrieren, wie zum Beispiel („use feature 'signatures'“), die es ermöglichen, bei der Funktionsdefinition die Eingabeargumente zu bestimmen und deren Anzahl automatisch zu überprüfen (man kann schreiben „sub foo ($left, $right) {“ anstelle von „sub foo { my($left, $right) = @_;“). Außerdem plant man, standardmäßig den „isa“-Operator zur Überprüfung einzuführen, ob ein Objekt eine Instanz der angegebenen Klasse oder deren Unterklasse ist („if( $obj isa Package::Name )“), sowie postderef Operationen „$sref->$*“ anstelle von „${ $sref }“, „$aref->@*“ anstelle von „@{ $aref }“ und „$href->%{ … }“ anstelle von „%$href{ … }“.
Kandidaten für die standardmäßige Deaktivierung in Perl 7 sind:
- Indirekte Objektaufrufnotation („„) — eine veraltete Methode zur Objektaufruf, bei der anstelle von „->“ ein Leerzeichen verwendet wird („method $object @param“ anstelle von „$object->$method(@param)“). Zum Beispiel muss anstelle von „my $cgi = new CGI“ immer „my $cgi = CGI->new“ verwendet werden.
- Nackte Datei-Deskriptoren ohne Variablendeklaration („„) — die Verwendung von Konstruktionen wie „open FH, $file“ führt zu Fehlern; stattdessen sollte „open my $fh, $file“ verwendet werden. Diese Änderung betrifft nicht die Standard-Dateideskriptoren STDIN, STDOUT, STDERR, ARGV, ARGVOUT und DATA.
- Fiktive mehrdimensionale Arrays und Hashtabellen im Perl 4-Stil („«).
Zum Beispiel führt die Angabe „$hash{1, 2}“ zu einem Fehler; stattdessen sollte ein Zwischenspeicher-Array verwendet werden, zum Beispiel „$hash{join($;, 1, 2)}“. - Prototypdeklarationen im Perl 4-Stil (es sollte „use :prototype()“ verwendet werden).
In den weiter entfernten Plänen wird standardmäßig geplant, die Unterstützung für Unicode einzuführen, wodurch Entwickler die Anweisung „use utf8“ im Code vermeiden können. Für Module und Skripte, die mit den neuen Standardeinstellungen Probleme haben, gibt es die Möglichkeit, das Verhalten von Perl 5 wiederherzustellen, indem die Zeile „use compat::perl5“ in den Code eingefügt wird. Einzelne Einstellungen werden ebenfalls gespeichert und können separat angepasst werden.
Quelle: opennet.ru
