This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
better documentation for eval_sv() and G_KEEPERR
authorDavid Mitchell <davem@iabyn.com>
Sun, 3 Oct 2010 19:50:20 +0000 (20:50 +0100)
committerDavid Mitchell <davem@iabyn.com>
Sun, 3 Oct 2010 19:52:10 +0000 (20:52 +0100)
perl.c
pod/perlcall.pod

diff --git a/perl.c b/perl.c
index 0a58b7c..ca5aea6 100644 (file)
--- a/perl.c
+++ b/perl.c
@@ -2661,7 +2661,8 @@ Perl_call_sv(pTHX_ SV *sv, VOL I32 flags)
 /*
 =for apidoc p||eval_sv
 
-Tells Perl to C<eval> the string in the SV.
+Tells Perl to C<eval> the string in the SV. It supports the same flags
+as C<call_sv>, with the obvious exception of G_EVAL. See L<perlcall>.
 
 =cut
 */
index f34a53d..1694848 100644 (file)
@@ -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