Thanks Ron. (1) Why is that good from a security point of view? (2) I've been thinking about something like that, but thought it may be a big sparse matrix, and not very helpful. I'm going to have a play with various ideas for "showing the space".

A little background... Module::Quote is an experiment based on the idea of a sigil for package names as mentioned by chromatic. Sigils are hard to implement outside core; quote-like operators are more doable. It achieves some of its aims - it resolves a technical ambiguity (Math::BigInt->new will only return a new Math::BigInt object until somebody defines a BigInt() function in the Math package), and helps make "different things look different".

Module::Hash is weirder, I grant you. It's basically the half-way point on the way to Module::Quote. It's less magic, and has lighter dependencies. I prefer Module::Quote though.

Tied hashes work by associating a Perl hash with a blessed object. Module::Quote uses blessed Module::Hash objects, but doesn't tie them to hashes - it just reuses Module::Hash's logic for splitting module name and version, adding an optional module name prefix, etc.

As for showing the space, I was thinking that given a spreadsheet, I (or other) could write code to generate a Graphviz image with edges linking module names to concepts or ideas. This would a different way of visualizing the connectedness or set of functionality offered by a module, one which might be clearer for some readers.