From 92df035a7821ea55524780fea1af31cb6452742e Mon Sep 17 00:00:00 2001
From: Chas. J. Owens IV <chas.owens@gmail.com>
Date: Tue, 2 Nov 2010 10:15:32 -0400
Subject: [PATCH 1/2] string do and require don't execute INIT and CHECK blocks

---
 pod/perlmod.pod |    9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/pod/perlmod.pod b/pod/perlmod.pod
index eaa8ba9..d6ddd83 100644
--- a/pod/perlmod.pod
+++ b/pod/perlmod.pod
@@ -311,10 +311,11 @@ 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 executed 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 (i.e. they are not in a C<BEGIN> block); 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.
-- 
1.7.1.1

