Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris

Re: Assignment and use statement in the same BEGIN block

by Discipulus (Abbot)
on Jan 31, 2019 at 08:03 UTC ( #1229190=note: print w/replies, xml ) Need Help??

in reply to Assignment and use statement in the same BEGIN block

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:

# use Foo; my $foo = Foo->new(); $foo->do(); # does: 1.Compile 1.Compile use Foo; 2.Execute require Foo; 1.Compile 1. ... 2.Execute 1. ... 3.Execute import Foo; 4.Compile my $foo = Foo->new(); 5.Compile $foo->do(); 2.Execute 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


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.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1229190]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (3)
As of 2019-10-20 06:22 GMT
Find Nodes?
    Voting Booth?