Thread Mitbekommen, wenn ein Block verlassen wird? (4 answers)
Opened by Muffi at 2012-11-29 17:00

Muffi
 2012-11-29 17:00
#163748 #163748
User since
2012-07-18
1465 Artikel
BenutzerIn
[default_avatar]
Gibts in Perl eine Möglichkeit mitzukriegen, wenn ein Codeblock verlassen wird?
DESTROY bei Objekten muss ja nicht zeitnah aufgerufen werden.

Das was ich mir mal zusammengezimmert hab war:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package TIE;


sub TIESCALAR {
    my $class = shift;
    my $code = shift;
    return bless \$code => $class;
}


sub DESTROY {
        ${$_[0]}->();
    undef ${$_[0]};
}


package BlockExit;

sub do {
        my $var;
        tie $var, 'TIE', shift;
        return \$var;
}


package main;


if (1) {
        my $onExit = BlockExit::do(sub { say "RAUS!"; });
        say "DRIN";
}

say "DRAUSSEN";


Aber schön sieht auch irgendwie anders aus. Und ich wär mir nicht mal sicher, ob das zwingend zeitnah passieren muss. Weiss das wer?
1 + 1 = 10

View full thread Mitbekommen, wenn ein Block verlassen wird?