wacko idea: combine a generic data tree traverse engine with damian's switch op. you pass this new smart traverse a ref and it will scan the tree. at every node it sees, it can call callbacks or methods. it can do the callbacks in pre, in or post ordering to get useful effects. if a node is an object, the optional method can be called (e.g. CLONE). each node could also be handled by a switch on its type. so this traverse engine could be shared by GC, clone, Data::Dumper, Storable, etc. just musing, uri -- Uri Guttman --------- [EMAIL PROTECTED] ---------- http://www.sysarch.com SYStems ARCHitecture, Software Engineering, Perl, Internet, UNIX Consulting The Perl Books Page ----------- http://www.sysarch.com/cgi-bin/perl_books The Best Search Engine on the Net ---------- http://www.northernlight.com