zurück zum Artikel

Perl 5.22: Stärken leicht ausgebaut

Herbert Breunung
Perl 5.22: Leichter Ausbau der Stärken

In der neuen Version der Skriptsprache haben ihre Entwickler vor allem an Perls Paradedisziplin – den String-Operationen – und der Geschwindigkeit gearbeitet.

Wie immer um diese Zeit ist mit Perl 5.22 [1] eine neue Version der Skriptsprache [2] erschienen. Eine Handvoll neue Operatoren und Regex-Funktionen sind der Gewinn für den gewöhnlichen Perl-Nutzer, der sich auch noch über spürbare Optimierungen [3] freuen darf. Fast alle Neuheiten sind wie bekannt [4] zuschaltbar (zusammen oder einzeln mit dem in eckigen Klammern eingefügten [Namen]) und zudem oft noch als experimentell markiert (dann in spitzen Klammern: <Namen>).

Obwohl die "perlpolicy [5]" jetzt eindeutig regelt, wann aus Experimenten reguläre Funktionen werden, bleiben wichtige Features wie <signatures>, <smartmatch> und <switch> weiterhin experimentell. Der Doppel-Diamant-Operator (<<>>) funktioniert wie der einfache (<>), nur bemüht er beim Einlesen der Dateien aus @ARGV ein open mit drei Parametern, was Angriffsmöglichkeiten ausschließt.

Als <bitwise [6]> kommen die String-Operatoren (&., |., ^., ~.) nebst den selbstzuweisenden Varianten (&.=, |.=, ^.=). So etwas Ähnliches gibt es bereits als logische Zeichenoperatoren [7]: ~&, ~| und ~^ in Perl 6, das für Ende dieses Jahres in einer Vollversion angekündigt ist [8]. Anstatt jeden Teilausdruck mit "(?:...)" als nicht speichernd zu kennzeichnen, reicht nun die Option n (wie "none capturing"): $var =~ /.../n;.

Durch den Modus use re 'strict'; (<re_strict>) wird Perl strenger in der Beurteilung regulärer Ausdrücke. Unicode-Zeichenklassen für Grenzen (Boundaries) wie Wort- oder Satzgrenzen lassen sich nun durch \b{...} ausdrücken. Unicode wurde auf den Stand der Version 7 gebracht. Bei aktiviertem <refaliasing> vermag eine Variable nach \@a = \@b auf den Inhalt einer zweiten zeigen, was auch mit Routinen funktioniert: \&a = \&b.

<const_attr> ermöglicht den Einsatz des Attributs :const, mit dem sub zur Kompilierzeit ausgeführt wird (wie BEGIN) und von da an nur noch das Resultat dieser einen Ausführung gibt (sub name :const {...}).

Wie angekündigt verschwanden die Module CGI und Module::Build aus dem Kern, die Funktionen defined(@array) und defined(%hash) wurden endgültig verboten; der IO-Layer win32 ist wegen seiner Unzuverlässigkeit auf den Status eines experimentellen Features herabgestuft (<win32_perlio>). (ane [9])


URL dieses Artikels:
https://www.heise.de/-2672640

Links in diesem Artikel:
[1] http://www.nntp.perl.org/group/perl.perl5.porters/2015/06/msg228300.html
[2] https://metacpan.org/pod/release/RJBS/perl-5.22.0/pod/perldelta.pod
[3] http://blog.booking.com/making-perl-faster.html
[4] https://www.heise.de/hintergrund/Syntaktische-Neuheiten-in-Perl-5-20-2391923.html
[5] https://metacpan.org/pod/release/RJBS/perl-5.22.0/pod/perlpolicy.pod#Terminology
[6] http://metacpan.org/pod/release/RJBS/perl-5.22.0/pod/perlop.pod#Bitwise-String-Operators
[7] http://doc.perl6.org/language/operators
[8] https://www.heise.de/news/Vermutlich-kein-Scherz-Perl-6-koennte-zu-Weihnachten-erscheinen-2534683.html
[9] mailto:ane@heise.de