in reply to DIE handling ... carp!

Depending on what you mean by "continue", it might be best to locally override CORE::GLOBAL::die, like so:
{ my $realdie = \&CORE::GLOBAL::die; local *CORE::GLOBAL::die = sub { $realdie->(@_) if $something; print LOG @_ }; ## do_stuff }
See the section on %SIG in perlvar for some discussion.