Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

Re: Module 'use' chains

by bbfu (Curate)
on Aug 10, 2006 at 05:24 UTC ( #566551=note: print w/ replies, xml ) Need Help??

in reply to Module 'use' chains

A simpler method is to just leave off the package line in your Include module. The module automatically starts in the package of the caller, and thus the chain-included modules will automatically export to the correct place.

# use warnings; use strict; package foo; use Include; funcA(); funcB(); funcC();

# use myA; use myB; use myC; 1;

package myA; use base 'Exporter'; our @EXPORT = qw(funcA); sub funcA { warn "funcA"; } 1;

package myB; use base 'Exporter'; our @EXPORT = qw(funcB); sub funcB { warn "funcB"; } 1;

package myC; use base 'Exporter'; our @EXPORT = qw(funcC); sub funcC { warn "funcC"; } 1;


funcA at line 7. funcB at line 7. funcC at line 7.

Black flowers blossom
Fearless on my breath

Comment on Re: Module 'use' chains
Select or Download Code
Replies are listed 'Best First'.
Re^2: Module 'use' chains
by ikegami (Pope) on Aug 10, 2006 at 05:40 UTC

    That will only work the first time use is called. Replace
    use Include;
    BEGIN { do ''; }

Re^2: Module 'use' chains
by tilly (Archbishop) on Aug 10, 2006 at 05:33 UTC
    Perl really works like that? (Tests.) Ugh.

    But note that that only works if the package is used only from within one package.

      You're right. I should have tested it more thoroughly.

      Black flowers blossom
      Fearless on my breath

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://566551]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (4)
As of 2016-02-06 16:55 GMT
Find Nodes?
    Voting Booth?

    How many photographs, souvenirs, artworks, trophies or other decorative objects are displayed in your home?

    Results (233 votes), past polls