Perl 5.22: Stärken leicht ausgebaut

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

 –  27 Kommentare
Perl 5.22: Leichter Ausbau der Stärken

Wie immer um diese Zeit ist mit Perl 5.22 eine neue Version der Skriptsprache 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 freuen darf. Fast alle Neuheiten sind wie bekannt 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" 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> kommen die String-Operatoren (&., |., ^., ~.) nebst den selbstzuweisenden Varianten (&.=, |.=, ^.=). So etwas Ähnliches gibt es bereits als logische Zeichenoperatoren: ~&, ~| und ~^ in Perl 6, das für Ende dieses Jahres in einer Vollversion angekündigt ist. 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>). (Herbert Breunung) / (ane)