in reply to Make $^V and "my" implicit
Age sucks. But Perl, as a language, does have to deal with its age. Namely, that there are many millions of lines of code, worth many millions of dollars, that must continue to run without alteration, even as Perl itself (incrementally! not radically!) evolves. This constrains what the language implementation can and cannot do, and this is also probably why the “new and improved” Perl-6 project never got its wings.
The use language_version idiom is important because it stops the program from running on a version of Perl that (as the author alone knows) can’t run this particular program. In so doing, it also tells the recipient of that program which minimum version of Perl is said to be required. A long group of use this_feature; use that_feature; blocks, while maybe equivalent, would be much more cumbersome and less informative to the bloke who’s simply trying to get an unfamiliar bit of software to run on his system and needs to be told what to do.
What we really can’t do, though, is to fundamentally redefine the language, because that will hard-break compatibility and possibly change the fundamental meaning of existing code. Every existing bit of code, which was interpreted in a particular way ten years ago, must continue to be interpreted in exactly the same way now. And, if that code depended on an artifact of the implementation that was known and generally-accepted to be true ten years ago, we probably have to keep that artifact forever. The business risk of doing otherwise is prohibitive: we must not break Perl.
Given that the language, say, used my since its earliest days, it will need to keep doing so. If something was not implicit, it can’t be made implicit now. Whether or not someone thinks that it is in some way “–er” is not the engineering point. Guaranteed compatibility, and total reliability, is. We just don’t have arbitrary freedom of choice, even in the name of improvement, because of the million-dollar past.