From 5617e9667fce453ffa66029ebc10c972a3066725 Mon Sep 17 00:00:00 2001 From: Shawn M Moore Date: Wed, 26 Jan 2011 21:31:55 -0500 Subject: Add a terse_error parameter to eval_closure --- lib/Eval/Closure.pm | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/Eval/Closure.pm b/lib/Eval/Closure.pm index 48f9258..6a1f41e 100644 --- a/lib/Eval/Closure.pm +++ b/lib/Eval/Closure.pm @@ -83,6 +83,12 @@ parameter lets you override that to something more useful (for instance, L overrides the description for accessors to something like "accessor foo at MyClass.pm, line 123"). +=item terse_error + +Normally, this function appends the source code that failed to compile, and +prepends some explanatory text. Setting this option to true suppresses that +behavior so you get only the compilation error that Perl actually reported. + =back =cut @@ -98,8 +104,14 @@ sub eval_closure { my ($code, $e) = _clean_eval_closure(@args{qw(source environment)}); - croak("Failed to compile source: $e\n\nsource:\n$args{source}") - unless $code; + if (!$code) { + if ($args{terse_error}) { + die "$e\n"; + } + else { + croak("Failed to compile source: $e\n\nsource:\n$args{source}") + } + } return $code; } -- cgit v1.2.3-54-g00ecf