in the meantime, here a hack that works: (plz ignore, see UPDATE)
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)
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().
In reply to Re^6: RFC: Simulating Python's @decorators in Perl with Attributes (exporting attributes)
by LanX
in thread RFC: Simulating Python's @decorators in Perl with Attributes
by LanX
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |