There's also potentially another simple solution, which in some ways is
superior, and means we can avoid the whole thing about upper/lowercase being
significant, that case thing honestly seems like a cludge.
Use namespaces.
In the generic sense, we could say that all names are in at least one level of
namespace. Perl just reserves a namespace for itself for official names, and
the other namespaces are available for use by others.
For brevity, the namespace qualifier may be omitted when referring to the
Perl-reserved namespace, and so any names that appear unqualified are assumed to
be there by default.
This is somewhat analogous to the main:: namespace for Perl code.
A parallel solution would be that POD can declare a version, similarly to how
Perl code can declare a Perl version, whose spec it is expected to be
interpreted according to.
If POD declares that it is written to a particular version of the POD spec, then
any unqualified names are taken as reserved ones iff that version of the POD
spec included them, and they are taken as user-defined otherwise.
I really think that's the way to go.
It can also be documented that the official POD spec will likely just use
all-uppercase or all-lowercase ASCII words, but that isn't a promise and rather
is a convention; there may be a good reason to change later.
Explicit versioning is your friend.
Can I get some support for this?
-- Darren Duncan