Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

Re: Trying to Understand Callback(s)

by holli (Abbot)
on Nov 23, 2017 at 22:33 UTC ( [id://1204172]=note: print w/replies, xml ) Need Help??


in reply to Trying to Understand Callback(s)

# just as you can have a variable that contains strings and numbers, # you can have a variable that contains subroutines. my $subroutine = sub { print "Hello\n" }; # you can call this subroutine like so: $subroutine->(); &$subroutine(); # you can also put a named subroutine into a variable sub hello { print "Hi there!\n"; } my $hello = \&hello; &$hello(); # if you use a variable that is lexically bound to the scope # the subroutine is defined in, you get what's called a closure my @subs; foreach my $adress ( "Sir", "Ma'am" ) { #each instance of the sub gets its own $adress push @subs, sub { print "Good day $adress\n" }; } $subs[0]->(); $subs[1]->(); # if you call a subroutine that returns a subroutine, # you have what's called a factory sub make_greeter { my $timeoday = shift; return sub { print "Good $timeoday\n" }; } my $greeter = make_greeter("morning"); $greeter->(); # if you pass a subrouine off to some other code, # which promises to CALL that subroutine BACK # at some later point in time / when some event happens, # you have what's called a callback. # Depending on the calling code, # the callback might or might not receive arguments. sub handle_get_response { my $response = shift; # ... } my $get_response_handler = \&handle_get_response; # When the request is done SomeWebClient will call $get_response_handl +er->(); SomeWebClient->get( url => $get_response_handler );


holli

You can lead your users to water, but alas, you cannot drown them.

Replies are listed 'Best First'.
Re^2: Trying to Understand Callback(s)
by Laurent_R (Canon) on Nov 23, 2017 at 23:47 UTC
    Hi holli,

    congratulations for these very nice explanations.

    You really achieve to show quite a lot, and fairly clearly in my opinion, in a relatively short post. I really wish I could upvote your post a few more times. ;-)

Re^2: Trying to Understand Callback(s)
by DanielSpaniel (Scribe) on Nov 24, 2017 at 01:17 UTC
    Your post has definitely given me a much clearer idea. I really appreciate your time and effort in responding to me. I'll need to re-read the posts on here a few times more, but I'm very grateful for your reply, and the others of course too. Thank you very much!

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others romping around the Monastery: (2)
As of 2025-07-13 11:58 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.