What I actually trying to do is to make the error send to my mail
box ( at this moment ) while my script is running in public. So it does 
a little more then die, but I still trying to keep the command line simple.
looks like unless $something or die "........" 

My code is some what like this :
package CGI::Fatals;

require Exporter;
our @ISA = qw (Exporter);
our @EXPORT = qw /die warn/;

use strict;
use mail2me; # my pm
use ContentType; # my pm

sub die
{    ContentType ('text/html') unless $ENV{contenttype};
        print "@_";
        mail2me (@_);    
        exit (0);
}

sub warn
{ .......... }

$main::SIG{__DIE__} = \¨
$main::SIG{__WARN__} = \&warn;

#### EOS ########

I don't know if that's similar to pass the die message to a sub
or which is better. As a beginner (me), I would like to ask, 
which is better, or does my concept or direction is going wrong 
or not.....

----- Original Message ----- 
From: "drieux" <[EMAIL PROTECTED]>
To: "cgi cgi-list" <[EMAIL PROTECTED]>
Sent: Wednesday, July 30, 2003 10:37 AM
Subject: Re: How does CGI.pm handles Content-type: text/html\n\n ?


> 
> On Tuesday, Jul 29, 2003, at 18:36 US/Pacific, LI NGOK LAM wrote:
> [..]
> >
> > So...... if I create my own style of "fatalsToBrowser".
> > Is that possible to do in this way :
> >
> [..]
> 
> The reason that 'fatalsToBrowser' and the rest came about
> is because many perl modules are built on 'die' or 'Carp'.
> 
> And that 'die' would make the foo.cgi code 'exit abruptly'
> and that would generate a 500 error.
> 
> So if the code you are building on does not do a 'die',
> 'Carp', 'Croak' - then you really do not need to 'worry about it'.
> 
> What you will want to learn about is how to set a local
> signal handler - if you want to write your own. I built
> some stuff ontop of some code that I knew had a series
> of places where it would invoke 'die' - since that code
> was not 'designed for the web' and in those case 'dying'
> was a good thing - so the wrapper call solves it:
> 
>   sub wrapper_call
>   {
> my ($me,$host_port,$uri,$q) = @_;
> 
> our ($page,$h) ;
> our $wrapper_flag = 0;
> our $bytes_read = 0;
> 
> eval {
> 
> local $SIG{'__DIE__'} = sub { $wrapper_flag = 1;} ;
> 
> ($bytes_read, $page, $h ) =
> get_from_server($host_port, $uri, $q);
> };
> 
> return({ run_time_error =>
> "Problems connecting to $host_port got status: $@" }
> ) if ( $wrapper_flag );
> 
> return({ run_time_error =>
> "Server $host_port Returned: $h->{dtk_status}"})
> if ($h->{dtk_status} !~ /OK/);
> 
> return $page if ($bytes_read);
> \$page;
> 
>   } # end of wrapper_call
> 
> In this case the caller either gets the reference to the
> page, or a reference to a hash, that has the 'run_time_error'
> message in it...
> 
> This way if the caller wants to report out the error case
> then they can do that, or they can also decide that they
> do not care that the error occurred, and go on to some
> other strategy...
> 
> ciao
> drieux
> 
> ---
> 
> 
> -- 
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to