You need a little more to get this to work from a web server. Here is a more complete demo incorporating ideas from other replies. Try playing around with the code until you understand what's happening. Also, it is ok to execute code outside of a module's subs depending on what you're trying to achieve.
package foo; use strict; use warnings; require Exporter; our @ISA = 'Exporter'; our @EXPORT = 'bar'; print "module foo loaded here \n"; sub bar{ print "module foo, sub bar executed here\n"; } 1;
#!/usr/bin/perl use strict; use warnings; print "main I \n"; # sub called from module bar(); # begin blocks are loaded at compile time # the first BEGIN block will be the first thing to execute BEGIN { # turn on autoflush so you will see print results immediately $| = 1; # plain text header to simplify the print statements for this demo print "content-type: text/plain\n\n"; print "begin block 1 \n"; } print "main II \n"; # modules are also loaded at compile time # consider them to behave like BEGIN blocks use foo; print "main III \n"; BEGIN { print "begin block 2 \n"; }
In reply to Re^3: when is a perl module executed?
by hangon
in thread when is a perl module executed?
by ketaki
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |