Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re: my sub ?

by maverick (Curate)
on Mar 25, 2002 at 19:57 UTC ( [id://154194]=note: print w/replies, xml ) Need Help??


in reply to my sub ?

You could make anonymous subrouting references to (x) in sub a & b like so:
sub a { my $ref = sub { print "x1\n"; }; &$ref; } sub b { my $ref = sub { print "x2\n"; }; &$ref; } &a; &b;
The only thing that will look different is the call to the fucntion if you can live with that.

/\/\averick
perl -l -e "eval pack('h*','072796e6470272f2c5f2c5166756279636b672');"

Replies are listed 'Best First'.
Re: Re: my sub ?
by shotgunefx (Parson) on Mar 25, 2002 at 20:00 UTC
    Doesn't calling a sub reference with & imply the passing of your @_ ?

    -Lee

    "To be civilized is to deny one's nature."
      Yes it does, but if you just stick $ref; out there by itself, or with () after it, perl doesn't get that that's supposed to be a function call and throws a syntax error.

      You pretty much have to have the & as far as I know.

      Or you could use $ref->(); It's monday and I'm being a blonde.

      Update:Thanks chromatic, Fletch, and shotgunefx for the clue-by-four-ing.

      /\/\averick
      perl -l -e "eval pack('h*','072796e6470272f2c5f2c5166756279636b672');"

        $ref->() works just fine. As would &{$ref}().

        Unless I want the behavior, I usually call a code ref with
        $ref->();
        Probably 9 out of 10 times you can get away with it but it can product subtle bugs. I wasn't originally aware of the implied passing of @_ and it was never a problem.. until.

        -Lee

        "To be civilized is to deny one's nature."

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others about the Monastery: (5)
As of 2024-04-25 13:49 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found