"Brent Dax" <[EMAIL PROTECTED]> writes: > [EMAIL PROTECTED]: > # I was wondering how perl6 would stringify (as in Data::Dumper): > > As Dan said, that's serialization. I don't know if Perl will support > that built-in. But if it does... > > # 1) objects with 'my' and 'our' variables > > Those would have to be dumped from the pads or stashes. I don't think > there's any way around that.
The semantics of this are unclear. Say I have (sorry if the syntax is wrong) { my $t; my ($x,$y) = (-> { ++$t }, -> { $t-- }); } (The intent is I can use C<$x.()> and C<$y.()> to count backwards and forwards). Now, if I say C<print FH serialize($x,$y)> (assume suitable encoding, delimiting, etc.; I'm not asking about those), I'd expect to get a copy of C<$x> and C<$y>, and they should share the same C<$t>. Right? What does the list C<($x.serialize(), $y.serialize)> give me? Given that there's no way to know that both serializations will end up going to the same file, they have to give me the equivalent of { my $t; my $x = -> { ++$t }; } { my $t; my $y = -> { $t-- }; } So we've broken the meaning of the code (and serialization can't just be a UNIVERSAL method, we have to be able to call it as a function on a list). Is this a Good Thing? (Can we Do Better???) OK, so now say I'm reading the original (C<serialize($x,$y)>). And I do it twice. Following the previous logic, I get 2 copies of C<$t>, one for each reading. This might make sense, or it might not. How do I read "half" of C<serialize($x,$y)>? (That is, can I get just C<$x>?) The easy answer is to say I can't. This creates an uncomfortable situation. Every time I want to serialize a bunch of closures, I have to serialize all of them in one go. And I have to deserialize them all if I want to access any bit of them. What do I do if I have 10_000 copies of some huge bunch, and I want to access just one bit of it? Seems like I have to deserialize everything -- even though I<for this case> we could be doing a lot better! I guess I just don't understand how serializing closures is supposed to work. [...] -- Ariel Scolnicov |http://3w.compugen.co.il/~ariels Compugen Ltd. |[EMAIL PROTECTED] "Sometimes people write an 72 Pinhas Rosen St. |Tel: +972-3-7658117 accidental haiku. Damn! Tel-Aviv 69512, ISRAEL |Fax: +972-3-7658555 It just happened!"