|Perl Monk, Perl Meditation|
I suspect he also knew the business about rand(). But with his many hours of real life experience trying to statically parse Perl, he focused on the stronger proof -- the one that would give him the most information about what he was up against in creating PPI.
You pretty much nailed it exactly.
From a practical perspective there's about 5-10 things that, in various combinations, make Perl impossible to parse.
However, there's a big difference between what we believe and what we can prove.
And so from the perspective of knowing absolutely that Perl 5 can't be parsed, the Halting Problem approach was by far the most straight forward way to do it (at least to a layman like me).
This realization let me finally put the possibility of a complete parser out of my mind, and once I wasn't distracted by completeness any more, I had the chance to evaluate and actually define what "good enough" would mean for a "Perl 5 parser".
And that perspective on the problem was the one that took the code in the direction of the working solution.