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.
![Perl 5.22: Leichter Ausbau der Stärken](https://heise.cloudimg.io/width/610/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/1/5/0/5/1/2/5/perl-f840342155a9a609.jpeg)
- Herbert Breunung
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.
String-Operationen und reguläre Ausdrücke
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 {...}).
Verabschiedungen
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)