diff --git a/src/pl/plperl/expected/plperl_do.out b/src/pl/plperl/expected/plperl_do.out
index a955581..f5d56ed 100644
--- a/src/pl/plperl/expected/plperl_do.out
+++ b/src/pl/plperl/expected/plperl_do.out
@@ -3,5 +3,7 @@ DO $$
   elog(NOTICE, $a);
 $$ LANGUAGE plperl;
 NOTICE:  This is a test
+CONTEXT:  PL/Perl anonymous code block
 DO $$ use Config; $$ LANGUAGE plperl;
 ERROR:  'require' trapped by operation mask at line 1.
+CONTEXT:  PL/Perl anonymous code block
diff --git a/src/pl/plperl/plperl.c b/src/pl/plperl/plperl.c
index 9bb588b..7f5d98e 100644
--- a/src/pl/plperl/plperl.c
+++ b/src/pl/plperl/plperl.c
@@ -165,6 +165,7 @@ static SV  *plperl_create_sub(char *proname, char *s, bool trusted);
 static SV  *plperl_call_perl_func(plperl_proc_desc *desc, FunctionCallInfo fcinfo);
 static void plperl_compile_callback(void *arg);
 static void plperl_exec_callback(void *arg);
+static void plperl_inline_callback(void *arg);
 
 /*
  * This routine is a crock, and so is everyplace that calls it.  The problem
@@ -912,6 +913,13 @@ plperl_inline_handler(PG_FUNCTION_ARGS)
 	plperl_proc_desc desc;
 	plperl_call_data *save_call_data = current_call_data;
 	bool		oldcontext = trusted_context;
+	ErrorContextCallback pl_error_context;
+	
+	/* Set a callback for error reporting */
+	pl_error_context.callback = plperl_inline_callback;
+	pl_error_context.previous = error_context_stack;
+	pl_error_context.arg = (Datum) 0;
+	error_context_stack = &pl_error_context;
 
 	if (SPI_connect() != SPI_OK_CONNECT)
 		elog(ERROR, "could not connect to SPI manager");
@@ -959,6 +967,7 @@ plperl_inline_handler(PG_FUNCTION_ARGS)
 	if (SPI_finish() != SPI_OK_FINISH)
 		elog(ERROR, "SPI_finish() failed");
 
+	error_context_stack = pl_error_context.previous;
 	current_call_data = save_call_data;
 	restore_context(oldcontext);
 
@@ -2806,3 +2815,12 @@ plperl_compile_callback(void *arg)
 	if (procname)
 		errcontext("compilation of PL/Perl function \"%s\"", procname);
 }
+
+/*
+ * Error context for the inline handler
+ */
+static void
+plperl_inline_callback(void *arg)
+{
+	errcontext("PL/Perl anonymous code block");
+}
