package Foo;
use strict;
use Attribute::Handlers;
sub import {
my $pkg = (caller)[0];
eval <<"_code_";
sub ${pkg}::Sorted :ATTR {
print "all sorted"
}
_code_
}
1;
#!/usr/bin/perl
use strict;
use warnings;
use Foo;
$\="\n";
my $tst2 :Sorted;
print "done\n"
Beside of this:
I think attributes could be monkey patched to check a dedicated package like 'UNIVERSAL::attributes" for global attributes.
Cheers Rolf
( addicted to the Perl Programming Language)
UPDATE
less hacky, more stable!
package Foo;
use strict;
use Attribute::Handlers;
sub import {
my $src_pkg=__PACKAGE__;
my $dest_pkg = (caller)[0];
my $import = "sub ${dest_pkg}::Sorted :ATTR { goto \&${src_pkg}::Sor
+ted }";
eval $import;
}
sub Sorted {
print "all sorted"
}
1;
the essential problem is that :ATTR stores the combination of package and coderef for every new attribute to be able to identify them later via findsym(). |