in reply to Recursion, tree parsing.

That's called a pre-order traversal, because you deal with the key before dealing with the children. I typically do something like this:
$tree = [[], $key, []]; sub traverse; sub traverse { return unless @{$_ [0]}; traverse $_ [0] [0]; print $_ [0] [1]; traverse $_ [0] [2]; }

That's an in-order traversal. Your structure has the advantage that it can deal with any number of children, while the code above assumes 2 children for each non-empty node; as is common for binary trees.

Abigail