Detectando destruição global em Perl

Eu gostaria de detectar se meu objeto está sendoDESTROYcomo parte da destruição global e imprima um aviso (pois isso seria claramente um erro e levaria à perda de dados). A maneira óbvia de fazer isso parece ser:

sub DESTROY {
    my $self = shift;
    # ⋮
    if (i_am_in_global_destruction()) {
        warn "I survived until global destruction";
    }
}

mas não consegui encontrar uma boa maneira de detectar a destruição global (em vez de o refcount normal atingir 0 de destruição).

Por "bom caminho", não quero dizer isso, que, embora funcione em 5.10.1 e 5.8.8, provavelmente quebra no segundo em que alguém dá uma olhada estranha:

sub DESTROY {
    $in_gd = 0;
    {
        local $SIG{__WARN__} = sub { $_[0] =~ /during global destruction\.$/ and $in_gd = 1 };
        warn "look, a warning";
    }
    if ($in_gd) {
        warn "I survived until global destruction";
    }
}'

questionAnswers(2)

yourAnswerToTheQuestion