What's a dump stream actually going to look like? E.g., $a = [1, 2, 3]; print dump($a);
1: PMC PerlArray 2: 3 # element count 3: PMC PerlInt # [0] 4: 1 # value 5: PMC PerlInt # [1] 6: 2 # value 7: PMC PerlInt # [2] 8: 3 # value Fine and good. But dump must handle object graphs, which can be recursive or self-referential or whatnot: $a = { b => undef }; $b = { a => $a }; $a->{b} = $b; print dump($a); 1: PMC PerlHash 2: 1 # key-value count 3: PMC PerlString # keys[0] 4: "b" # value 5: PMC PerlHash # values[0] 6: 1 # key-value count 7: PMC PerlString # keys[0] 8: "a" # value 9: !!!!!!! Panic! Dump needs to refer to line 4 again, or else recurse! How? Most serializers use a seen hash not only to indicate that an object has been seen, but also to remember a name or number for that object. If dump had remembered &$a => line 4, it could finish off with something like... 9: Again 4 # values[0] A seen hash is also threadsafe, can be interrupted by DoD, and is safe for recursion. (By "threadsafe," I mean that unchanged data structures can be safely serialized from multiple threads without ill effect or possibility of deadlock.) -- Gordon Henriksen IT Manager ICLUBcentral Inc. [EMAIL PROTECTED]