This sounds like a pretty good idea (and one that's possibly workable, at that!)
One alternative would be to invert your logic. Instead of
use warnings version => 5.008003;
to only get warnings introduced at or before 5.8.3, perhaps a
use warnings lastversion => 5.008003;
to only get the relevant warnings introduced, and
no warnings 'lastversion';
as the opposite.
This means that newer code will implicitly support the new warnings (because it lacks a 'lastversion' declaration), while retrofitting old code to inhibit the new warnings (in case it causes a problem) is one line added to the top of the file. The already-lexical nature of 'use warnings' should take care of the rest.
}"for split/</;$_=$,,y[A-Z a-z]