On Thu, Mar 10, 2005 at 02:22:20PM -0600, Rod Adams wrote: > David Storrs wrote: > >On Wed, Mar 09, 2005 at 03:38:52PM -0600, Rod Adams wrote: > >> use Foo; # from above, exports &bar is MMD::Random > >> multi sub bar {...} > >> > >>Does this generate an error, since one could expect this particular &bar > >>to be Manhattan? Or does it assume Random, since there's already a &bar > >>in existence? > > > >This seems like action-at-a-distance to me; > > > Well, if you were not expecting Foo to export some &bar's, then you're > in for a surprise regardless of dispatch when you call &bar in your code > and one of Foo::bar gets called instead of one of yours, because it was > a closer match. > > I would say that people should know what they are getting into when they > C< use > something.
What I'm hearing you say here is "Yes, it's action-at-a-distance, but it's your job to make sure it doesn't trip you up." The problem that I see is that I may well be able to keep track of everything from the modules I import, but what about the ones THEY import...and the ones THEY import...and so on. In a medium-to-large software project, that can get to be a lot of modules, very quickly. --Dks