Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / tools / perl-5.8.0 / lib / 5.8.0 / Attribute / Handlers / demo / MyClass.pm
CommitLineData
86530b38
AT
1package MyClass;
2$VERSION = '1.00';
3use v5.6.0;
4use base Attribute::Handlers;
5no warnings 'redefine';
6
7
8sub Good : ATTR(SCALAR) {
9 my ($package, $symbol, $referent, $attr, $data) = @_;
10
11 # Invoked for any scalar variable with a :Good attribute,
12 # provided the variable was declared in MyClass (or
13 # a derived class) or typed to MyClass.
14
15 # Do whatever to $referent here (executed in CHECK phase).
16 local $" = ", ";
17 print "MyClass::Good:ATTR(SCALAR)(@_);\n";
18};
19
20sub Bad : ATTR(SCALAR) {
21 # Invoked for any scalar variable with a :Bad attribute,
22 # provided the variable was declared in MyClass (or
23 # a derived class) or typed to MyClass.
24 local $" = ", ";
25 print "MyClass::Bad:ATTR(SCALAR)(@_);\n";
26}
27
28sub Good : ATTR(ARRAY) {
29 # Invoked for any array variable with a :Good attribute,
30 # provided the variable was declared in MyClass (or
31 # a derived class) or typed to MyClass.
32 local $" = ", ";
33 print "MyClass::Good:ATTR(ARRAY)(@_);\n";
34};
35
36sub Good : ATTR(HASH) {
37 # Invoked for any hash variable with a :Good attribute,
38 # provided the variable was declared in MyClass (or
39 # a derived class) or typed to MyClass.
40 local $" = ", ";
41 print "MyClass::Good:ATTR(HASH)(@_);\n";
42};
43
44sub Ugly : ATTR(CODE) {
45 # Invoked for any subroutine declared in MyClass (or a
46 # derived class) with an :Ugly attribute.
47 local $" = ", ";
48 print "MyClass::UGLY:ATTR(CODE)(@_);\n";
49};
50
51sub Omni : ATTR {
52 # Invoked for any scalar, array, hash, or subroutine
53 # with an :Omni attribute, provided the variable or
54 # subroutine was declared in MyClass (or a derived class)
55 # or the variable was typed to MyClass.
56 # Use ref($_[2]) to determine what kind of referent it was.
57 local $" = ", ";
58 my $type = ref $_[2];
59 print "MyClass::OMNI:ATTR($type)(@_);\n";
60 use Data::Dumper 'Dumper';
61 print Dumper [ \@_ ];
62};
63
641;