I may be missing something obvious but if I have Perl 5.12 installed why should I have to specify:
use 5.012;
You are missing that fact that you don't have to.
Can't Perl detect which version is installed or something?
No,
Perl cannot, but
perl can. The point is,
use 5.012; appears in the
Perl program, and when the
perl binary runs, it checks whether its version is at least the version required by the program. If not, the program is terminated with an appropriate message.
Note that since 5.10, use 5.010; (or later, or using use 5.10.0) there's an implied use feature ':5.10'; (or whatever version number you used). And since 5.12, the use version will enable strict. No enabling of features or strict happen when using require.
Also note that use v5.10; == use 5.10.0; == 5.010;. But use 5.10; == use 5.100;. Which, IMO, is not very DWIM.
I don't know whether there's a (single-line) syntax that at compile time checks for 5.10, but which doesn't enable features.