in reply to
So much interconnectedness - good or bad?
I've been in that situation before, not so much in Perl, but in C. If you end up using all of them together because they are so tightly coupled, then what you really have is one big module even if it's in several files on disk.
Perhaps what's really needed here is a new concept of what separates the modules. I can go on and on with respect to the fact that low level libraries (like it appears A and D are) shouldn't depend on higher level ones, but without knowing your situation that's really not valuable.
Start with the functions that are atomic and don't depend on anybody else. Then build from that layers, making modules that depend only on those atomic functions. Then add layers above that that build on the 2nd layer modules. Make the distinction between the modules and layers functional where one module does one job and it should become more clear where the lines are.
Above all though, this is an issue of if it ain't broke don't fix it. Unless this is causing you heartache, or you have time to burn, or it's making your application buggy, don't mess with it.
My mission: To boldy split infinitives that have never been split before!