in reply to die function and notifications

You can also do your clean-up in the END block:
#!/usr/bin/perl die("Die just another day!\n"); END {print "Still alive to clean up\n"}
-----------------------------------
--the good, the bad and the physi--
-----------------------------------

Replies are listed 'Best First'.
Re: Re: die function and notifications
by nimdokk (Vicar) on May 22, 2003 at 19:46 UTC
    This is what I've ended up doing. I test for the return code of a call to an external program and if that returns a non-zero, I die and pass the return code to the END from die. Then, within the END, I test $? to see if it is greater than zero, if it is, then I copy the log with an error message and send an alert. Otherwise I copy the log with a different name and exit completely with a 0. This may be kludgy but it seems to work (for the moment). using eval() and $@ does not work so well because I can't get the error messages into $@ (at least not yet).

    &My::custom_routine("TESTTRANSFER"); my $rc=$?>>8; die ($rc) if ($rc > 0); END { if ($? > 0) { print STDERR "TEST.PL Died with error.\n"; copy("TEST.LOG", "TEST.ERROR"); &My::pager("TEST ERROR MESSAGE."); }else{ print STDERR "TEST.PL completed successfully.\n"; copy("TEST.LOG", "TEST.GOOD"); exit 0; } }

    Thanks for the help.

    "Ex libris un peut de tout"