The second suggestion is violated by the standard distribution
(AnyDBM_File, GDBM_File, NDBM_File, SDBM_File), although it
could be argued they are just .pm files, and don't use
class names with '::' in them. But a quick scan of the file
sources/modules/02packages.details.txt.gz shows
several name spaces that use an underscore in the first
component. (CDB_File, DB_File, DWH_File, heavy_template).
I think that in theory the way Perl and CPAN works is that it
is very hard to make sure there are no name clashes. I think
that practise has shown that there's not much of a problem.
Abigail