I was doing this: eval { push @results, "<h1> page content </h1>"; push @results, "<h2> more page content ..."; $title = "xyzz"; if($Data->fetch()) { die "Error, line ".__LINE__; } # I never see this line number! } if($@){ print $q->header(), start_html(-title => "Error $@"); # This never worked )else{ print $q->header(), start_html(-title => "$title"); } print join("", @results);
This was working except when I got an error: I got no helpful error messages. Apache HTTP just give me an internal CGI error. When I single stepped thru the debugger, it seemed to work right in the sense the print statement would emit the html header. However, the $@ never seemed to have the string from the die statement. I'm using HTTPD 2.0.48 and ActiveState Perl 5.8+. So I changed it: print $q->header(), start_html(-title => $title); eval { push @results, "<h1> page content </h1>"; push @results, "<h2> more page content ..."; $title = "xyzz"; # this works! if($Data->fetch()) { die "Error, line ".__LINE__; } } if($@){ print "<h1>Error $@"; # This now works! )else{ } print join("", @results); This is working much better: I'm getting meaningful error messages from my die statements with line numbers and even a stack trace when I use the cgi::trace::trace function in the die statement. But now the problem is that I am trying to print $title before I have assigned a value to it. Can someone help me understand how to have a title that is read from a database and still get meaningful error messages? If I try to read the $title variable from the database before printing the $q->header(), I might encounter a die statement and then I'm back to the problem I started with. Thanks again, Siegfried -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>