home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 2005 December (Special)
/
PCWorld_2005-12_Special_cd.bin
/
Bezpecnost
/
lsti
/
lsti.exe
/
framework-2.5.exe
/
MyClass.pm
< prev
next >
Wrap
Text File
|
2005-01-27
|
2KB
|
65 lines
package MyClass;
$VERSION = '1.00';
use v5.6.0;
use base Attribute::Handlers;
no warnings 'redefine';
sub Good : ATTR(SCALAR) {
my ($package, $symbol, $referent, $attr, $data) = @_;
# Invoked for any scalar variable with a :Good attribute,
# provided the variable was declared in MyClass (or
# a derived class) or typed to MyClass.
# Do whatever to $referent here (executed in CHECK phase).
local $" = ", ";
print "MyClass::Good:ATTR(SCALAR)(@_);\n";
};
sub Bad : ATTR(SCALAR) {
# Invoked for any scalar variable with a :Bad attribute,
# provided the variable was declared in MyClass (or
# a derived class) or typed to MyClass.
local $" = ", ";
print "MyClass::Bad:ATTR(SCALAR)(@_);\n";
}
sub Good : ATTR(ARRAY) {
# Invoked for any array variable with a :Good attribute,
# provided the variable was declared in MyClass (or
# a derived class) or typed to MyClass.
local $" = ", ";
print "MyClass::Good:ATTR(ARRAY)(@_);\n";
};
sub Good : ATTR(HASH) {
# Invoked for any hash variable with a :Good attribute,
# provided the variable was declared in MyClass (or
# a derived class) or typed to MyClass.
local $" = ", ";
print "MyClass::Good:ATTR(HASH)(@_);\n";
};
sub Ugly : ATTR(CODE) {
# Invoked for any subroutine declared in MyClass (or a
# derived class) with an :Ugly attribute.
local $" = ", ";
print "MyClass::UGLY:ATTR(CODE)(@_);\n";
};
sub Omni : ATTR {
# Invoked for any scalar, array, hash, or subroutine
# with an :Omni attribute, provided the variable or
# subroutine was declared in MyClass (or a derived class)
# or the variable was typed to MyClass.
# Use ref($_[2]) to determine what kind of referent it was.
local $" = ", ";
my $type = ref $_[2];
print "MyClass::OMNI:ATTR($type)(@_);\n";
use Data::Dumper 'Dumper';
print Dumper [ \@_ ];
};
1;