All those errors are safe to ignore. The server didn't log anything about your script's failure! Your server's logging is incomplete.
On getting a request,
- Your script dies (Nothing logged!!!)
- Your server is configured to return 500.shtml when a 500 error occurs, but you didn't create it (harmless). So the web server logs this error and generates a 404 for 500.shtml.
- Your server is configured to return 404.shtml when a 404 error occurs, but you didn't create it (harmless). So the web server logs this and returns the default error message.
Since you can't rely on the server logs, you'll need to use
use CGI::Carp qw( fatalsToBrowser );