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" | [reply] [d/l] |