On Sun, Mar 13, 2022 at 1:14 PM David Christensen <dpchr...@holgerdanske.com>


I have been wrestling with the Exporter module and subroutine circular
dependencies between modules for a number of years.  I have yet to find

On 3/13/22 14:57, Karen Etheridge wrote:
> I haven't looked at your code, but I assume what you're doing is exporting
> a sub from each module, and something in each of those modules is calling
> each of those subs in turn, using the exported symbol. This is indeed an
> unresolvable circular dependency because unqualified sub names must be
> resolved at compile (i.e. "use" or BEGIN{}) time.
> One solution is to not import all the symbols -- break the cycle by simply
> 'use'ing a module without importing its subs, and call that sub by its
> fully-qualified name (e.g. Foo::foo() rather than foo()), which only needs
> to be resolvable at runtime.

Thank you for the reply.  :-)

I am looking for a solution that allows me to call module subroutines via imported names, rather than via fully-qualified names.


Reply via email to