in reply to Modules: Building blocks for the Daft Adventure
Anyway you might want to check out Games::Maze in CPAN just for an idea of how to generate mazes and populate them. Maybe you don't want this because the mazes are all preprepared, but the point I wanted to make is to think about how this system will actually be used and try to conceive of the main scenarios for use. This may help you decide what metaphors for game play are useful and the objects can be defined naturally from that.
I'm not sure if you are trying to build something like an intelligent gaming board on a server somewhere that interacts with many browsers, or if it is just a totally abstract system of descriptions of gaming and objects in a game that doesn't suggest a certain implementation. Or is this maybe just for a single user? I think the real question is, are you trying to build a general simulation system (it might work for military simulations too) or a simpler gaming aid for a DM to use. The nice thing about modules is that it helps you compartmentalize your thinking, and keep it simple. Of course you can just dive in and not worry about doing lots of revisions!
If you are trying to a general system to describe and run all kinds of simulations of players in virtual worlds, then you can start from the ground up and try to describe what D&D is all about from the ground up instead of starting with advanced concepts like monsters and multisided dice.
But the idea of respecting Perl that came out above I think has more to do with taking care of how you choose the underlying metaphors on which your system is built. If they are powerful metaphors which resonate strongly with the realities of gaming, you will be able to extend them for a long, long time.