Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re^2: Using a module more than once

by kwaping (Priest)
on Aug 02, 2005 at 15:22 UTC ( [id://480227]=note: print w/replies, xml ) Need Help??


in reply to Re: Using a module more than once
in thread Using a module more than once

I guess I could do that - thanks for the suggestion! I just wanted to load them situationally, as not all of them are needed for every method. Or am I misunderstanding how that mechanism works?

Replies are listed 'Best First'.
Re^3: Using a module more than once
by bart (Canon) on Aug 02, 2005 at 15:54 UTC
    Or am I misunderstanding how that mechanism works?
    You are. Any module that gets used, will be loaded at compile time, thus, when your module is loaded. So there's no use in putting a use statement inside a method.

    Sometimes, when some modules are only needed in exceptional circumstances, people can use a require statement in a method or sub, for example to load Carp in an error trapping routine.

    You have to be aware of the differences between use and require: require doesn't call import in the loaded modules, and it won't change the allowable syntax for your code either. Thus, subs defined in that module won't be easily recognized as such in the loading script. It's something to look out for.

    For OO modules, it makes no difference, whether you choose use or require.

      However, as I understand it, you can delay use calls if you are using SelfLoader and then execute the use call inside of a subroutine.

      Example:
      use SelfLoader; sub __PACKAGE__::myfunc; 1; __DATA__ sub myfunc { use ThisOtherModule; }
        Interesting. And it comes with perl 5.8.7, no less. But so does autouse. Its purpose looks similar.
        SelfLoader
        load functions only on demand
        autouse
        postpone load of modules until a function is used

        So... what's the difference between SelfLoader and autouse? And which is "best"?

Re^3: Using a module more than once
by davidrw (Prior) on Aug 02, 2005 at 15:33 UTC
      Great, thanks for the clarification! I'll switch to one of those other styles (either doing all the "use" statements at the head of the file, or using require instead).
Re^3: Using a module more than once
by holli (Abbot) on Aug 02, 2005 at 15:35 UTC
    You're misunderstanding. use happens at compile time. Consider:
    #file: /perl/site/lib/Foo.pm package Foo; use strict; use warnings; sub bar { return "BAR"; } 1; #file: test.pl use strict; use warnings; my $i = 0; if ( $i ) { use Foo; } print Foo::bar; #prints "BAR"


    holli, /regexed monk/

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others rifling through the Monastery: (6)
As of 2024-04-25 18:06 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found