Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things

Re^4: Including files

by Athanasius (Chancellor)
on Aug 30, 2014 at 04:04 UTC ( #1099057=note: print w/replies, xml ) Need Help??

in reply to Re^3: Including files
in thread Including files

Sorry, I think you’re reading Juerd’s tutorial back-to-front.

So now tell me again why I'm not supposed to just use require to read in a library of functions?

Well, it’s usually better to say:

use MyModule LIST;

because that’s a convenient shorthand for:

BEGIN { require Module; Module->import( LIST ); }

which is likely to be what you want (see use.) But whether it’s use or require, that’s exactly what you are supposed to use to “read in a library of functions”. Juerd isn’t telling you not to use require, he’s telling you that neither require nor do will give you the equivalent of C’s #include.

In fact, in C I have to add macro definitions and ifs to get include files to include only once.

Exactly! But Juerd’s point is that some programmers want to use #include to include the same code in multiple places, and that won’t work with require. It will work with do, except that “code evaluated with do FILENAME cannot see lexicals in the enclosing scope” — do. So if you have a file “”:

$foo = 42; print "In \$foo = $foo\n"

which you then try to “include” in another file using do:

use strict; use warnings; my $foo = 17; print "Before do: \$foo = $foo\n"; do ''; print "After do: \$foo = $foo\n";

the result is probably not what you wanted:

13:54 >perl Before do: $foo = 17 In $foo = 42 After do: $foo = 17 13:54 >

Hope that helps,

Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1099057]
[Corion]: Hurr - as I'm running some not-so-static websites nowadays, maybe I really should implement a link checker that crawls these sites and checks that all internal links work ...
[Corion]: (in the sense of not returning 404 errors)

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (16)
As of 2017-10-18 11:17 GMT
Find Nodes?
    Voting Booth?
    My fridge is mostly full of:

    Results (244 votes). Check out past polls.