Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number

Fun with $SIG{__DIE__}

by Adam (Vicar)
on Jul 08, 2000 at 00:41 UTC ( #21573=perlquestion: print w/replies, xml ) Need Help??
Adam has asked for the wisdom of the Perl Monks concerning the following question:

I am in the process of adding a bunch of debug commands to a script. They are of the form:
print LOG "Some message like, \$v=$v\n" if DEBUGING;
(Note that DEBUGING is a constant declared with use constant) And I wanted to catch all those lines that said
do this or die "couldn't do it.";
by catching the die signal. But I'm not sure how to catch the message that die was called with. Does any one know?
$SIG{__DIE__}=sub {print LOG "Script Died" and close LOG if DEBUGING}; # is what I have, but I want: $SIG{__DIE__}=sub {print LOG "Script Died: $msg" and close LOG if DEBU +GING};

Replies are listed 'Best First'.
Re: Fun with $SIG{__DIE__}
by plaid (Chaplain) on Jul 08, 2000 at 00:45 UTC
    From Programming Perl:
    The routine indicated by $SIG{__DIE__} is called when a fatal exception is about to be thrown. The error message is passed as the first argument.
    So you probably want something like:
    $SIG{__DIE__}=sub {print LOG "Script Died: $_[0]" and close LOG if DEB +UGING};
      That works. I guess I should RTFM more closely. :) Thanks.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://21573]
Approved by root
[stevieb]: one of my long-running Perl procs crashes with a segfault (because it wraps C code) is crashing after an hour or so... seeing if wrapping the cli call with valgrind will produce something useful

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (6)
As of 2017-04-29 03:10 GMT
Find Nodes?
    Voting Booth?
    I'm a fool:

    Results (531 votes). Check out past polls.