Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re: Why are closures cool, continued?

by perrin (Chancellor)
on Jan 19, 2002 at 03:10 UTC ( #139990=note: print w/replies, xml ) Need Help??


in reply to Why are closures cool, continued?

That's a very confusing example because it looks like an object but isn't. That example would still work if you remove the OO looking stuff:
#!/usr/local/bin/perl use strict; my $dave = subref("dave", "oranges", "grapefruit"); $dave->("debug message"); sub subref { my (@stuff) = @_; return sub { doit(@stuff, @_) }; # <-- closure here? } sub doit { print shift, ": ", join(",", @_), "\n"; }
Yes, it is a closure, but it's also an anonymous sub ref, so it's showing multiple things. Here's a much simpler closure:
my $foo; sub bar { $foo++; }
After execution, bar() has a private copy of $foo. TheDamian uses this in his book to do private variables for classes.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://139990]
help
Chatterbox?
[Discipulus]: Almosen is Elemosina in Eatalian
[erix]: yeah, you mediteraaneans are one big family :)
[Discipulus]: greece had to copyrigth etymologies to fill the debt..
[erix]: good no-nonsense american approach to these soft european practices: "Upon entering the Almshouses in Connecticut, patients were whipped up to 10 times"
Discipulus should have..
[erix]: the almshouse generally seems to have become an anglosaxon relic :P
[Discipulus]: just to be sure was not for a free lunch.. sbaaam!
[Discipulus]: here now we call them Cities
[erix]: 'cities'? in italian? are they funded by charity?
[LanX]: The New Testament was first "published" in Greek, that's why

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (12)
As of 2017-11-23 20:28 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    In order to be able to say "I know Perl", you must have:













    Results (338 votes). Check out past polls.

    Notices?