Beefy Boxes and Bandwidth Generously Provided by pair Networks Cowboy Neal with Hat
laziness, impatience, and hubris
 
PerlMonks  

Re: Serializing coderefs

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

This is an archived low-energy page for bots and other anonmyous visitors. Please sign up if you are a human and want to interact.


in reply to Serializing coderefs

I'm trying to do it using B::Utils. Looks like I'm wrong, since this code:
#!/usr/bin/perl my $s = sub { my $k = shift; return $k;}; use B::Utils qw( walkoptree_simple ); print walkoptree_simple( $s, { print } );
issues an error: Can't call method "isa" on unblessed reference looks like B::Utils does not work with coderefs. Any hint?

Replies are listed 'Best First'.
Re: Re: Serializing coderefs
by jmerelo (Sexton) on Jun 20, 2002 at 05:11 UTC
    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...
      I don't want to be adverse, but between your last post and the first one lie barely 30 minutes. The intermediate post makes it seem even more fidgety. I hope it's not the norm for you to ask questions you can answer for yourself within half an hour - an occasional occurence is very forgivable as even the best of us get stuck in boneheaded mode sometimes, but we are all expected to try and avoid false impatience.

      Makeshifts last the longest.

        Well, I can just say what I said in my previous post: when in doubt, ask, but don't wait for the answer, work on it... Would you consider me any smarter if I hadn't answered my own question?
        There's something about struggling with a problem for hours and then giving up and asking others for help that seems to jar stuff loose in the brain. It happens to me all the time. Maybe it's related to what Poe called the Imp of the Perverse.
        ()-()
         \"/
          `                                                     
        
      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?

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://175934]
help
Sections?
Information?
Find Nodes?
Leftovers?
    Notices?
    hippoepoptai's answer Re: how do I set a cookie and redirect was blessed by hippo!
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.