in reply to Re: Re: Re: Gettin ALL errors with carp module
in thread Gettin ALL errors with carp module

The reason you see only the "Execution of ... aborted due to compilation errors" message is that this is the only fatal error being produced. The "String found..." compilation 'error' is actually a severe warning, which is not caught by fatalsToBrowser.

This is a quirk of how many of Perl's compilation errors are handled. If "... found where ... expected" were a fatal error, then compilation would abort immediately. Making it a severe warning allows compilation to continue, possibly reporting other errors and warnings, before finally failing with the generic compilation errors message. Here's an example:

if ($x) { prnt "Hello"; } elseif { print "Goodbye" $x = 1; }
If all compilation errors were fatal, you'd just get: String found where operator expected at tmp.pl line 4, near "prnt "Hello"" But perl actually provides more:
String found where operator expected at tmp.pl line 4, near "prnt "Hel +lo"" (Do you need to predeclare prnt?) syntax error at tmp.pl line 4, near "prnt "Hello"" elseif should be elsif at tmp.pl line 5. Scalar found where operator expected at tmp.pl line 7, at end of line (Missing semicolon on previous line?) syntax error at tmp.pl line 7, near "$x " tmp.pl had compilation errors.
This does have its drawbacks, as you've found. However, you should make sure your scripts compile before running them from the browser, which would avoid the problem you are having.