Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re: Module 'use' chains

by bbfu (Curate)
on Aug 10, 2006 at 05:24 UTC ( [id://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.

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

# Include.pm 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;

Output:

funcA at myA.pm line 7. funcB at myB.pm line 7. funcC at myC.pm line 7.

bbfu
Black flowers blossom
Fearless on my breath

Replies are listed 'Best First'.
Re^2: Module 'use' chains
by ikegami (Patriarch) on Aug 10, 2006 at 05:40 UTC

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

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.

      bbfu
      Black flowers blossom
      Fearless on my breath

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others taking refuge in the Monastery: (2)
As of 2024-04-25 03:48 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found