Jeff 'japhy' Pinyan [[EMAIL PROTECTED]] quoth:
*>On Nov 16, Ray Murphy said:
*>
*>>When using modules, is it better to say 'use
*>>Foo::Bar;' rather than 'require'.  Also I've noticed
*>>that some people put their 'use' or 'require'
*>>statements in subroutines and not at the beginning of
*>>the program - what benefits does this serve - conserve
*>>memory because as soon as you've left the routine the
*>>module goes bye bye (guessing)??  But surely the
*>>library would have to compile everytime the subroutine
*>>would be called and therefore slow the program down
*>>somewhat (again, guessing).
*>
*>The FAQ has an answer for this: "What's the difference between require and
*>use?"  Check http://www.perldoc.com/, and look in perlfaq8.
*>
*>The skinny is this:
*>
*>  1. require() happens at run-time, and either takes a bareword module
*>     name or a path to a file (not necessarily a module)
*>  2. use() happens at compile-time (so putting it in a function doesn't
*>     "help") and it involves require()ing a module and then calling its
*>     import() method

In practical daily use, use(); is preferred as since it compiles the
module as soon as it sees 'use Foo::Bar;' before moving on, this will
catch errors and scope conflicts far sooner than if you use require();
There aren't many good reasons to use require, at least I can't think of
any. When in doubt, use use(); :)

If you see a lot of 'requires' in subroutines, I suspect someone just
didn't get scope or wrote a quick hack so performance is the least of the
codes worries. 

e.

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to