Hello my friend
perlancar,
you already had the perfect, concise answer by choroba, but let me expand something that can be useful.
use Module; <=> BEGIN { require Module; Module->import( LIST ); }
ikegami on SO explains it in this way:
# script.pl
use Foo;
my $foo = Foo->new();
$foo->do();
# does:
1.Compile script.pl
1.Compile use Foo;
2.Execute require Foo;
1.Compile Foo.pm
1. ...
2.Execute Foo.pm
1. ...
3.Execute import Foo;
4.Compile my $foo = Foo->new();
5.Compile $foo->do();
2.Execute script.pl
1.Execute my $foo = Foo->new();
2.Execute $foo->do();
Wich unveils the compiletime/runtime dicotomy.
Also very interesting read is Re: RunTime & compile Time Doubt on Perl (many) and the document I always called twelve pillars of wisdom (but i do not remember if it was named this way..) as found in perlmod
print "10. Ordinary code runs at runtime.\n";
END { print "16. So this is the end of the tale.\n" }
INIT { print " 7. INIT blocks run FIFO just before runtime.\n" }
UNITCHECK { print " 4. And therefore before any CHECK blocks
+.\n" }
CHECK { print " 6. So this is the sixth line.\n" }
print "11. It runs in order, of course.\n";
BEGIN { print " 1. BEGIN blocks run FIFO during compilation.\n" }
END { print "15. Read perlmod for the rest of the story.\n" }
CHECK { print " 5. CHECK blocks run LIFO after all compilation.\n" }
INIT { print " 8. Run this again, using Perl's -c switch.\n" }
print "12. This is anti-obfuscated code.\n";
END { print "14. END blocks run LIFO at quitting time.\n" }
BEGIN { print " 2. So this line comes out second.\n" }
UNITCHECK { print " 3. UNITCHECK blocks run LIFO after each file is
+compiled.\n" }
INIT { print " 9. You'll see the difference right away.\n" }
print "13. It only _looks_ like it should be confusing.\n"
+;
other interesting reads are at your disposal in my bibliotheca
L*
There are no rules, there are no thumbs..
Reinvent the wheel, then learn The Wheel; may be one day you reinvent one of THE WHEELS.
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.