I did not save my test script from yesterday, so I made a new one and this one produces the proper results in all cases. I must have goofed up something in my prior test.
Here's my test code. You can comment/uncomment lines as needed to see results from each case.
use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);
#warn "did this go the the log file and browser?";
#open my $fh, '<', 'badfile' or die "open failed $!";