in reply to Two recursive functions returning in unexpected order

UPDATE: Wow, I start my response when there are no others, walk away for a second and 2 people submit before me....and unbelievably, noone else says to turn on warnings or to use strict! ;-)

First off, try turning warnings on #!/usr/bin/perl -w and also always use strict;
That should be on anyway... but if you are having problems it can help find the location.

your line foreach my $child (keys($tables{$table})) shouldn't work. you can't call keys on a hash if you are actually calling a value out of the hash. try foreach my $child (keys(%tables))

you also have references to other variables foreach my $parent (@{$parents{$table}}) that we can't see where you are generating these variables.... Try posting more of the code. If it is long, use readmore tags.

-Kevin
my $a='62696c6c77667269656e6440676d61696c2e636f6d'; while ($a=~m/(^.{2})/s) {print unpack('A',pack('H*',"$1"));$a=~s/^.{2}//s;}