diff options
Diffstat (limited to 'lib/Attribute/Handlers/demo/Demo.pm')
-rwxr-xr-x | lib/Attribute/Handlers/demo/Demo.pm | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/lib/Attribute/Handlers/demo/Demo.pm b/lib/Attribute/Handlers/demo/Demo.pm new file mode 100755 index 0000000000..d82693574b --- /dev/null +++ b/lib/Attribute/Handlers/demo/Demo.pm @@ -0,0 +1,49 @@ +$DB::single = 1; + +package Demo; +use Attribute::Handlers; +no warnings 'redefine'; + +sub Demo : ATTR(SCALAR) { + my ($package, $symbol, $referent, $attr, $data, $phase) = @_; + $data = '<undef>' unless defined $data; + print STDERR 'Scalar $', *{$symbol}{NAME}, + " ($referent) was ascribed ${attr}\n", + "with data ($data)\nin phase $phase\n"; +}; + +sub This : ATTR(SCALAR) { + print STDERR "This at ", + join(":", map { defined() ? $_ : "" } caller(1)), + "\n"; +} + +sub Demo : ATTR(HASH) { + my ($package, $symbol, $referent, $attr, $data) = @_; + $data = '<undef>' unless defined $data; + print STDERR 'Hash %', *{$symbol}{NAME}, + " ($referent) was ascribed ${attr} with data ($data)\n"; +}; + +sub Demo : ATTR(CODE) { + my ($package, $symbol, $referent, $attr, $data) = @_; + $data = '<undef>' unless defined $data; + print STDERR 'Sub &', *{$symbol}{NAME}, + " ($referent) was ascribed ${attr} with data ($data)\n"; +}; + +sub Multi : ATTR { + my ($package, $symbol, $referent, $attr, $data) = @_; + $data = '<undef>' unless defined $data; + print STDERR ref($referent), ' ', *{$symbol}{NAME}, + " ($referent) was ascribed ${attr} with data ($data)\n"; +}; + +sub ExplMulti : ATTR(ANY) { + my ($package, $symbol, $referent, $attr, $data) = @_; + $data = '<undef>' unless defined $data; + print STDERR ref($referent), ' ', *{$symbol}{NAME}, + " ($referent) was ascribed ${attr} with data ($data)\n"; +}; + +1; |