Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re: Re: Serializing coderefs

by jmerelo (Sexton)
on Jun 20, 2002 at 09:11 UTC ( [id://175935]=note: print w/replies, xml ) Need Help??


in reply to Re: Serializing coderefs
in thread Serializing coderefs

Looks like this does the job:
my $s = sub { my $k = shift; return $k;}; use B::Deparse; my $deparse = B::Deparse->new("-p", "-sC"); print $deparse->coderef2text($s);
The morale here: when in doubt, ask, but don't wait for the answer, work on it...

Replies are listed 'Best First'.
•Re: Re: Re: Serializing coderefs
by merlyn (Sage) on Jun 20, 2002 at 13:50 UTC
    That of course "does the job" for a limited subset of coderefs, since at the moment there's no way to know the closure bindings (or get at them for their current values), so it'll come back to life pointing at an entirely wrong set of closure-bound variables.

    This is a known issue, and being considered during the development of the Perl6 runtime engine.

    -- Randal L. Schwartz, Perl hacker

      Is there a better way? Any reference to the cases where it will fail?
        It will fail on this:
        my $increment_by_secret = do { my $secret_number = 7; sub { $secret_number + shift }; };
        It fails because there's no access to $secret_number from outside the coderef, so we can't tell what the "magic constant" should be. All you get is:
        { ($secret_number + shift(@_)); }
        (Just tested.)

        -- Randal L. Schwartz, Perl hacker

A reply falls below the community's threshold of quality. You may see it by logging in.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://175935]
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-03-29 10:52 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found