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

Reply via email to