Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re^5: closure clarity, please

by vitoco (Friar)
on Nov 25, 2009 at 13:02 UTC ( #809334=note: print w/ replies, xml ) Need Help??


in reply to Re^4: closure clarity, please
in thread closure clarity, please

Impressive! I could follow you step by step. After a second read (starting from the last step), I realized how the interpreter seems to work.

I think that I could simplify your work by excluding the "outer f" subroutine from the improved example, but as it is, is a great pedagogical example and explanation.

Thank you very much! And more thanks goes to ikegami.

BTW, this is not the way I program. I just wanted to understand what the OP was trying to explain. Everyday I learn something new of Perl's world. I'm not sure if I'm ready for Perl 6.


Comment on Re^5: closure clarity, please
Re^6: closure clarity, please
by JadeNB (Chaplain) on Dec 07, 2009 at 16:39 UTC
    Here's another way of demonstrating the effect in your sample code, with hopefully a bit less “magic gluing”:
    sub g { my ( $a ) = @_; sub f { $a }; return sub { $a = $_[0] }; } push my @setters, g("Hi\n"), g("Bye\n"); print f; # => Hi $setters[0]("Bye\n"); print f; # => Bye $setters[1]("Hi\n"); print f; # => Bye (still)

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://809334]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (14)
As of 2015-07-07 12:34 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (88 votes), past polls