string do and require don't execute INIT and CHECK blocks
authorChas. J. Owens IV <chas.owens@gmail.com>
Tue, 2 Nov 2010 14:15:32 +0000 (10:15 -0400)
committerFlorian Ragwitz <rafl@debian.org>
Sun, 14 Nov 2010 16:18:05 +0000 (17:18 +0100)
Signed-off-by: Florian Ragwitz <rafl@debian.org>
[rafl@debian.org: Minor wording tweaks]

pod/perlmod.pod

index eaa8ba9..8679b53 100644 (file)
@@ -311,10 +311,10 @@ in the Perl compiler suite to save the compiled state of the program.
 C<INIT> blocks are run just before the Perl runtime begins execution, in
 "first in, first out" (FIFO) order.
 
-The C<CHECK> and C<INIT> code blocks will not be executed inside a string
-eval(), if that eval() happens after the end of the main compilation
-phase; that can be a problem in mod_perl and other persistent environments
-which use C<eval STRING> to load code at runtime.
+The C<CHECK> and C<INIT> blocks in code compiled by C<require>, string C<do>,
+or string C<eval> will not be executed if they occur after the end of the
+main compilation phase; that can be a problem in mod_perl and other persistent
+environments which use those functions to load code at runtime.
 
 When you use the B<-n> and B<-p> switches to Perl, C<BEGIN> and
 C<END> work just as they do in B<awk>, as a degenerate case.