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"; |
6c760df7 |
28 | |
29 | my %foo; |
30 | |
31 | my $foo = \%foo; |
32 | |
33 | cast $foo, $wiz, '$foo'; |
34 | |
35 | cast %foo, $wiz, '%foo'; |
36 | |
37 | bless($foo, 'Foo'); |
38 | |
39 | } |
40 | |
41 | { |
42 | warn "Stanza 3\n"; |
9a254f60 |
43 | |
44 | my $foo = do { |
45 | my %foo; |
46 | cast %foo, $wiz, '%foo'; |
47 | \%foo; |
48 | }; |
49 | |
50 | bless($foo, 'Foo'); |
51 | |
52 | cast $foo, $wiz, '$foo'; |
53 | |
54 | undef($foo); |
55 | |
56 | warn "End of block\n"; |
57 | |
58 | } |