Commit | Line | Data |
04070b92 |
1 | $DB::single = 1; |
2 | |
3 | package Demo; |
4 | use Attribute::Handlers; |
5 | no warnings 'redefine'; |
6 | |
7 | sub Demo : ATTR(SCALAR) { |
8 | my ($package, $symbol, $referent, $attr, $data, $phase) = @_; |
9 | $data = '<undef>' unless defined $data; |
10 | print STDERR 'Scalar $', *{$symbol}{NAME}, |
11 | " ($referent) was ascribed ${attr}\n", |
12 | "with data ($data)\nin phase $phase\n"; |
13 | }; |
14 | |
15 | sub This : ATTR(SCALAR) { |
16 | print STDERR "This at ", |
17 | join(":", map { defined() ? $_ : "" } caller(1)), |
18 | "\n"; |
19 | } |
20 | |
21 | sub Demo : ATTR(HASH) { |
22 | my ($package, $symbol, $referent, $attr, $data) = @_; |
23 | $data = '<undef>' unless defined $data; |
24 | print STDERR 'Hash %', *{$symbol}{NAME}, |
25 | " ($referent) was ascribed ${attr} with data ($data)\n"; |
26 | }; |
27 | |
28 | sub Demo : ATTR(CODE) { |
29 | my ($package, $symbol, $referent, $attr, $data) = @_; |
30 | $data = '<undef>' unless defined $data; |
31 | print STDERR 'Sub &', *{$symbol}{NAME}, |
32 | " ($referent) was ascribed ${attr} with data ($data)\n"; |
33 | }; |
34 | |
35 | sub Multi : ATTR { |
36 | my ($package, $symbol, $referent, $attr, $data) = @_; |
37 | $data = '<undef>' unless defined $data; |
38 | print STDERR ref($referent), ' ', *{$symbol}{NAME}, |
39 | " ($referent) was ascribed ${attr} with data ($data)\n"; |
40 | }; |
41 | |
42 | sub ExplMulti : ATTR(ANY) { |
43 | my ($package, $symbol, $referent, $attr, $data) = @_; |
44 | $data = '<undef>' unless defined $data; |
45 | print STDERR ref($referent), ' ', *{$symbol}{NAME}, |
46 | " ($referent) was ascribed ${attr} with data ($data)\n"; |
47 | }; |
48 | |
49 | 1; |