my @dieings; sub my_die() { # localise capture to just my_die() calls... local $SIG{__DIE__} = sub { push(@dieings, @_); }; die(@_); } #... time passes my_die("now we need to capture"); #... time passes print "now we need to report " . Dumper(\@dieings);