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