Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re^6: RFC: Simulating Python's @decorators in Perl with Attributes (exporting attributes)

by LanX (Bishop)
on Jun 02, 2013 at 20:03 UTC ( #1036619=note: print w/replies, xml ) Need Help??


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().

  • Comment on Re^6: RFC: Simulating Python's @decorators in Perl with Attributes (exporting attributes)
  • Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1036619]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (2)
As of 2018-07-22 14:51 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    It has been suggested to rename Perl 6 in order to boost its marketing potential. Which name would you prefer?















    Results (454 votes). Check out past polls.

    Notices?