Data::Dumper and Data::Dump::Streamer can, at least for plain code references that are not closures (or, to be more precise, are not closing over lexical variables outside their scope). Of course, that doesn't help you much, since you then have either two formats, the compact format of Storable and the less compact formats of Data::Dumper or DDS. Also, if you have arbitrary, non-trivial callbacks, there is a good chance that you won't be able to properly restore them, and the differences are subtle (but I have difficulties with coming up with an example where it's not obvious why the one does work and the other doesn't, so maybe it will always work like you expect if you manage to have the right expectations). The critical point is whether you can serialize/deserialize all callbacks in one go:

{ # these two subroutines and $i must be serialized in one go # so the dumper knows that the $i++ means the same variable # in both code structures: my $i; sub increment { $i++ }; sub decrement { $i-- }; };

In reply to Re: Saving/restoring coderefs. by Corion
in thread Saving/restoring coderefs. by Anonymous Monk

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.