in reply to Re^5: RFC: Simulating Python's @decorators in Perl with Attributes
in thread RFC: Simulating Python's @decorators in Perl with Attributes
yep, tried to analyze Attribute::Handlers but no time to dig into details.
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)
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().
In Section
Meditations