|| use Vs require in perl || What is the difference between use and require?
Except of course that use is evaluated at compile time where as require is evaluated at run time in other word, A use anywhere in the code will be evaluated when the code is run compiled, but require – import’s can only get evaluated when encoutered.
The differences are many and often subtle:
- use only expects a bareword, require can take a bareword or an expression
- use is evaluated at compile-time, require at run-time
- use implicitly calls the import method of the module being loaded, require does not
- use excepts arguments in addition to the bareword (to be passed to import), require does not
- use does not behave like a function (i.e can’t be called with parens, can’t be used in an expression, etc), whereas require does
do $file is like eval `cat $file`, except the former:
1.1: searches @INC and updates %INC.
1.2: bequeaths an *unrelated* lexical scope on the eval’ed code.
require $file is like do $file, except the former:
2.1: checks for redundant loading, skipping already loaded files.
2.2: raises an exception on failure to find, compile, or execute $file.
require Module is like require “Module.pm”, except the former:
3.1: translates each “::” into your system’s directory separator.
3.2: primes the parser to disambiguate class Module as an indirect object.
use Module is like require Module, except the former:
4.1: loads the module at compile time, not run-time.
4.2: imports symbols and semantics from that package to the current one.
Command to learn more about use and require
> perldoc -f require
> perldoc -f use