4 use Attribute::Handlers;
5 no warnings 'redefine';
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";
15 sub This : ATTR(SCALAR) {
16 print STDERR "This at ",
17 join(":", map { defined() ? $_ : "" } caller(1)),
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";
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";
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";
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";