in reply to eval "use $module" doesn't
works as advertised.package Bar warn "blaah"; sub bar { } use interface Foo; 1
Further more, what interface is doing is essentially:
And expects Bar to be fully loaded when do_stuff() is called. This just isn't true; use Bar will only load, compile and execute Bar.pm if it hasn't been use'd before, but in this case it clearly is.package Bar; sub BEGIN { eval "use Bar" if $loaded_for_the_first_time; do_stuff(); }
This is the "right" behaviour, because otherwise this would go into an infinite loop:
In other words, this is a bug in interface.# Foo.pm use Bar; # Bar.pm use Foo;
update: s/import/BEGIN/;
|
|---|