in reply to autoload - why is eval needed in this example?

Without knowing what's stored in %subs, my guess is that it's a string, and not a real code reference. Anonymous subroutines are compiled at compile time, but the contents of the hash aren't created until run time.

For future reference, "This wont work" generally leads to wild speculation as to what actually goes wrong and to what you're trying to do. You may receive more help if you elaborate.