Home > Archive > PERL Miscellaneous > January 2006 > FAQ 8.46 What's the difference between require and use?
You are viewing an archived Text-only version of the thread.
To view this thread in it's original format and/or if you want to reply to
this thread please [click here]
| Author |
FAQ 8.46 What's the difference between require and use?
|
|
| PerlFAQ Server 2006-01-30, 6:59 pm |
| This is an excerpt from the latest version perlfaq8.pod, which
comes with the standard Perl distribution. These postings aim to
reduce the number of repeated questions as well as allow the community
to review and update the answers. The latest version of the complete
perlfaq is at http://faq.perl.org .
--------------------------------------------------------------------
8.46: What's the difference between require and use?
Perl offers several different ways to include code from one file into
another. Here are the deltas between the various inclusion constructs:
1) 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.
2) 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.
3) 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.
4) 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.
In general, you usually want "use" and a proper Perl module.
--------------------------------------------------------------------
The perlfaq-workers, a group of volunteers, maintain the perlfaq. They
are not necessarily experts in every domain where Perl might show up,
so please include as much information as possible and relevant in any
corrections. The perlfaq-workers also don't have access to every operating
system or platform, so please include relevant details for corrections
to examples that do not work on particular platforms. Working code is
greatly appreciated.
If you'd like to help maintain the perlfaq, see the details in perlfaq.pod.
| |
| Glenn Jackman 2006-01-30, 6:59 pm |
| At 2006-01-30 12:03PM, PerlFAQ Server <comdog@pair.com> wrote:
> 3) 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.
What does 3.2 mean?
--
Glenn Jackman
Ulterior Designer
| |
| brian d foy 2006-01-30, 6:59 pm |
| In article <slrndtsjfd.5bi.xx087@smeagol.ncf.ca>, Glenn Jackman
<xx087@freenet.carleton.ca> wrote:
> At 2006-01-30 12:03PM, PerlFAQ Server <comdog@pair.com> wrote:
[color=darkred]
> indirect object.
> What does 3.2 mean?
It means that Perl parser can understand things such as
my $object = new Module @args
To do that, it need a hint of what the bareword "Module" means.
|
|
|
|
|