Commit | Line | Data |
9a254f60 |
1 | #!/usr/bin/env perl |
2 | |
3 | use strict; |
4 | use warnings; |
5 | use Variable::Magic qw(wizard cast); |
6 | |
7 | BEGIN { package Foo; sub DESTROY { warn "in DESTROY\n"; } } |
8 | |
9 | my $wiz = wizard data => sub { $_[1] }, |
10 | free => sub { warn "destroyed $_[1]!\n"; }; |
11 | |
12 | { |
13 | warn "Stanza 1\n"; |
14 | |
15 | my %foo; |
16 | |
17 | my $foo = \%foo; |
18 | |
19 | bless($foo, 'Foo'); |
20 | |
21 | cast $foo, $wiz, '$foo'; |
22 | cast %foo, $wiz, '%foo'; |
23 | |
24 | } |
25 | |
26 | { |
27 | warn "Stanza 2\n"; |
28 | |
29 | my $foo = do { |
30 | my %foo; |
31 | cast %foo, $wiz, '%foo'; |
32 | \%foo; |
33 | }; |
34 | |
35 | bless($foo, 'Foo'); |
36 | |
37 | cast $foo, $wiz, '$foo'; |
38 | |
39 | undef($foo); |
40 | |
41 | warn "End of block\n"; |
42 | |
43 | } |