in reply to Use of embedded classes

My vote is open interfaces, as much as possible. All you gain by bundling the two classes in one file is to unnecessarily prevent a user from doing something.

Maybe I think your tied hash is the best thing in the world, but want to improve it a little? Maybe I think that both are great, but want to extend Hash::Merge in a way that requires me to extend the base tied hash? It is easier for me to inherit from two paired classes than it is to rewrite the file.

You'll be bundling them, so people who don't want to know don't have to. People who do can easily use it.

------
We are the carpenters and bricklayers of the Information Age.

Don't go borrowing trouble. For programmers, this means Worry only about what you need to implement.