Upgrade to Attribute::Handlers 0.70.
[p5sagit/p5-mst-13.2.git] / lib / Attribute / Handlers / demo / Demo.pm
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;