Hmmmmmm. I found a workaround:
package Bar
warn "blaah";
sub bar { }
use interface Foo;
1
works as advertised.
Further more, what interface is doing is essentially:
package Bar;
sub BEGIN {
eval "use Bar" if $loaded_for_the_first_time;
do_stuff();
}
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.
This is the "right" behaviour, because otherwise this would go into an infinite loop:
# Foo.pm
use Bar;
# Bar.pm
use Foo;
In other words, this is a bug in
interface.
update: s/import/BEGIN/;
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.