- 论坛徽章:
- 0
|
从使用Attribute::Handlers模块开始。
use strict;
use warnings;
use Attribute::Handlers;
sub Loud : ATTR {
my ($pack, $ref, $code) = @_;
no warnings 'redefine';
my $name = *{$ref}{NAME};
*$ref = sub {
print "$name begin\n";
&$code;
print "$name end\n";
}
}
sub foo : Loud {
print "foo working\n";
}
foo; |
可以看出用sub attrname : ATTR { } 声明一个属性,然后即可以把这个属性附加在别的变量上了。Loud属性在应用此属性的方法体的前后各加一句调试信息。
属性处理函数通过参数得到环境信息(即属性被用在什么地方哪个变量上),具体参数定义可参考模块文档。 |
|