[This post notes differences between the fifth and sixth editions.]
There are a couple of interesting updates for Chapter 8. The small change is the slight modification of a footnote. We mentioned that the performance problem of the match variables $&
and friends wouldn’t be solved before Perl 6. However, with Perl 5.10’s introduction of the /p
match operator flag, problem solved!
Chapter 8 also has a subtle shift in thinking about anchors. Perl 5 introduced the \A
, \Z
, and \z
regular expression anchors. Somehow, never made the shift from the Perl 4 anchors ^
and $
. Even after Perl Best Practices pointed out the problem, we failed to update the Llama
I’d never really bothered to check when Perl introduced \A
until today. That’s a task I do quite frequently: when did some feature show up in Perl? I could just go through all the tarballs, unpack them, and look at the documentation, but there’s an easier way. Since I have a clone of the perl repository, I have access to the entire perl development history. Each release has a tag, and I can list all the tags:
$ git tag perl-1.0 perl-1.0.15 perl-1.0.16 perl-2.0 perl-2.001 perl-3.000 perl-3.044 perl-4.0.00 perl-4.0.36 perl-5.000 perl-5.000o perl-5.001 perl-5.001n perl-5.002 perl-5.002_01 perl-5.003 ...
If I want to see what was going on in a particular release, I checkout the appropriate tag:
git checkout perl-5.000
Now I can see the state of the repo at the point of that release. Sure enough, C<\A>, C<\Z>, and C<\z> are in the documentation back then.