summaryrefslogtreecommitdiff
path: root/pod/perlcall.pod
diff options
context:
space:
mode:
authorDavid Mitchell <davem@iabyn.com>2010-10-03 20:50:20 +0100
committerDavid Mitchell <davem@iabyn.com>2010-10-03 20:52:10 +0100
commitbe064c4a1f59651142e99788731ae1d164c19537 (patch)
treef1b6a281c175935bcde47b838caeca4ec14e5dbd /pod/perlcall.pod
parent6b2fb389897a68db92c38c22f79403607f0da303 (diff)
downloadperl-be064c4a1f59651142e99788731ae1d164c19537.tar.gz
better documentation for eval_sv() and G_KEEPERR
Diffstat (limited to 'pod/perlcall.pod')
-rw-r--r--pod/perlcall.pod8
1 files changed, 6 insertions, 2 deletions
diff --git a/pod/perlcall.pod b/pod/perlcall.pod
index f34a53dbfb..1694848986 100644
--- a/pod/perlcall.pod
+++ b/pod/perlcall.pod
@@ -336,8 +336,9 @@ It may also be useful to do this with code for C<__DIE__> or C<__WARN__>
hooks, and C<tie> functions.
The G_KEEPERR flag is meant to be used in conjunction with G_EVAL in
-I<call_*> functions that are used to implement such code. This flag
-has no effect when G_EVAL is not used.
+I<call_*> functions that are used to implement such code, or with
+C<eval_sv>. This flag has no effect on the C<call_*> functions when
+G_EVAL is not used.
When G_KEEPERR is used, any error in the called code will terminate the
call as usual, and the error will not propagate beyond the call (as usual
@@ -346,6 +347,9 @@ converted into a warning, prefixed with the string "\t(in cleanup)".
This can be disabled using C<no warnings 'misc'>. If there is no error,
C<$@> will not be cleared.
+Note that the G_KEEPERR flag does not propagate into inner evals; these
+may still set C<$@>.
+
The G_KEEPERR flag was introduced in Perl version 5.002.
See I<Using G_KEEPERR> for an example of a situation that warrants the