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]