|Subject:||over-strict rules for module names|
This is not really a bug, but rather a request for change of design. The new() method only accepts package names with letters, digits and underscores (otherwise it complains "package is not a module name"). I guess that this restriction was inspired by Perl's "package" directive. However, one of the reasons for playing with symbol tables through Package::Stash or other similar modules might be precisely to get more freedom than using compile-time "package" : for example when designing private implementation classes on the fly, it can be useful to use special characters in the class name. Perl has no problem handling stashes containing @#°§:! ; if you play directly with globs and %..:: arrays, you can do it easily. So I suggest to drop that regex constraint in the new() method.