Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

How to freeze/thaw anonymous subroutines?

by mikezone (Novice)
on Jun 26, 2002 at 08:14 UTC ( [id://177325]=perlquestion: print w/replies, xml ) Need Help??

mikezone has asked for the wisdom of the Perl Monks concerning the following question:

Hi all!

I've got a question that sets my head spinning. I've been asked about the possibility of freeze/thawing a scalar that's a subroutine reference. Can anyone make any suggestions? Will the B perl compiler module be of any use to me?

For example, say I have the following:

  my $a = sub { print "Hello!\n" };

I want to be able to store $a to a file, read it back from that file, and be still able to call it. Data::Dumper returns: $VAR1 = sub { "DUMMY" }, which obviously doesn't survive the round-trip.

So to reiterate, I'd like to know what freeze and thaw would look like in the following scenario:

my $a = sub { print "Hello\n" }; freeze( $a, "frozen.sub.file" ); $a = undef; thaw( $a, "frozen.sub.file" ); $a->(); # calls $a, printing "Hello\n"

Any and all assistance is greatly appreciated!

- m.

Replies are listed 'Best First'.
Re: How to freeze/thaw anonymous subroutines?
by crazyinsomniac (Prior) on Jun 26, 2002 at 08:36 UTC
Re: How to freeze/thaw anonymous subroutines?
by rob_au (Abbot) on Jun 26, 2002 at 09:21 UTC
    In addition to the comments of Juerd and crazyinsomniac above, I would direct your attention to this thread from a few days ago that dealt with the topic of serialising code references.

    The summary of this thread is that B::Deparse can be used for only a limited subset of code references, due to the private scope of variables and closure bindings. In particular, this problem was demonstrated with code in this post by merlyn.

    In light of this, it may be prudent to re-evaluate this requirement for serialised code references and shift this "external code" to child modules or external scripts.

     

Re: How to freeze/thaw anonymous subroutines?
by Juerd (Abbot) on Jun 26, 2002 at 08:24 UTC

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others lurking in the Monastery: (2)
As of 2024-04-20 11:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found