Thread die() in DESTROY() (5 answers)
Opened by sid burn at 2009-05-29 00:41

betterworld
 2009-05-30 00:48
#122083 #122083
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Ich habe mir gerade mal den Backtrace angeguckt (eigentlich nur, um zu sehen, ob der Destruktor innerhalb des Kontextes des Blockes, in dem das Objekt zerstört wird, läuft), und da fällt etwas auf:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
use strict;
use warnings;
use Carp qw(cluck);

sub new {
    return bless{};
}

DESTROY {
    cluck 'cluck';
}

sub foo {
    my $x = main->new;
    print "before\n";
    undef $x;
    print "after\n";
}

foo();


Ausgabe:
Code: (dl )
1
2
3
4
5
6
before
cluck at x.pl line 10
main::DESTROY('main=HASH(0x8c383cc)') called at x.pl line 17
eval {...} called at x.pl line 17
main::foo() called at x.pl line 20
after

Aha, da wurde also ein eval-Block reingeschummelt!

View full thread die() in DESTROY()