Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw

Re: my sub ?

by maverick (Curate)
on Mar 25, 2002 at 19:57 UTC ( #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.

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 @_ ?


    "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.

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


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

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (11)
As of 2019-12-16 12:17 GMT
Find Nodes?
    Voting Booth?

    No recent polls found