This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Carp: add a test for top-of-stack longmess
[perl5.git] / dist / Attribute-Handlers / demo / Demo.pm
CommitLineData
0e9b9e0c
JH
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;