Perl v5.26 has lots of improvements and some big changes with module loading. This might be the most backward-incompatible version this decade! As with any new perl, try it before you commit to it. You don’t want to install it over your currently working perl to later find out something doesn’t work.
Lexical $_ and autoderef are gone in v5.24
Two features that I have previously discouraged are now gone from Perl. The lexical $_
and auto dereferencing.
The lexical $_
was a consequence of the way Perl wanted smart match to work. In a given-when
, instead of aliasing $_
like foreach
does, the block had an implicit my $_ = ...
. This interfered with the package version, as I wrote about in Use for() instead of given() and Perl v5.16 now sets proper magic on lexical $_. Continue reading “Lexical $_ and autoderef are gone in v5.24”
Postfix dereferencing is stable is v5.24
Perl’s dereferencing syntax might be, or even should be, responsible for people’s disgust at the language. In v5.20, Perl added the experimental postfix dereferencing syntax that made this analogous to method chaining. This is one of the most pleasing Perl features I’ve encountered in years. Continue reading “Postfix dereferencing is stable is v5.24”
No more -no_match_vars
The English module translates Perl’s cryptic variable names to English equivalents. For instance, $_
becomes $ARG
. This means that the match variable $&
becomes $MATCH
. This also means that using the English module triggered the performance issue associated with the match variables $`
, $&
, and $'
even if you didn’t use those variables yourself—the module used them for you. The Devel::NYTProf debugger had a sawampersand
feature to tell you one of those variables appeared in the code. We covered this in Item 33. Watch out for the match variables. Continue reading “No more -no_match_vars”
Perl v5.24 new features
Perl v5.24 may not look like it’s packed full of exciting features (indeed, it removes some of them) but it has lots of improvements under the hood. Here’s some of the user-visible features you might like. Continue reading “Perl v5.24 new features”
Apple recommends installing your own perl
Apple recommends installing your own perl (or python or ruby) for your private development to not interfere with the work the bundled perl (or python or ruby) does. In Item 110. Compile and install your own perls. we recommended the same thing. Continue reading “Apple recommends installing your own perl”
Use subroutine signatures with anonymous subroutines
While working on my excellent number project, I created a subroutine that took a callback as an argument. When I dereferenced the callback I wanted to supply arguments. Since I was using Perl v5.22, I tried using a subroutine signature with it. Continue reading “Use subroutine signatures with anonymous subroutines”
Use /aa to get ASCII semantics in regexes, for reals this time
When Perl made regexes more Unicode aware, starting in v5.6, some of the character class definitions and match modifiers changed. What you expected to match \d
, \s
, or \w
are more expanvise now (Know your character classes under different semantics). Most of us probably didn’t notice because the range of our inputs is limited. Continue reading “Use /aa to get ASCII semantics in regexes, for reals this time”
Turn capture groups into cluster groups
Perl v5.22 adds the /n
regex flag that turns all parentheses groups in its scope into non-capturing groups. This can be handy when you want to capture almost nothing but still need to many cluster parts. You do less typing to get that. Continue reading “Turn capture groups into cluster groups”
Create named variable aliases with ref aliasing
Perl v5.22’s experimental refaliasing
feature adds the ability to alias a named variable to another named variable, or alias a named variable to a reference. This doesn’t copy the data; you end up with another named variable for the same data. As with all such features, the details and syntax may change or the feature may be removed all together (according to perlpolicy). Update: Also see v5.26’s declared_refs
experimental feature.
Continue reading “Create named variable aliases with ref aliasing”