If Aa requires Bb and Bb requires Aa, then both must always be loaded together, so there is no reason to use separate files for both. So: just put them in a common source file. That way you're transferring the execution time of code from the other module, that each module wants to run at their own compile time (as JavaFanpointed out, and which is impossible), to straightforward sequential execution. Problem fixed.
Comment on Re: Trying to break cyclical dependencies in Perl modules