Please post your entire code. I'm seeing some possibilities, but I'd like to work with your complete code and be able to compare results with it. For example, I know you're setting $permlist somewhere and you're removing duplicates somewhere. I'd like to see the whole thing, including a few sample calls.
We are the carpenters and bricklayers of the Information Age.
The idea is a little like C++ templates, except not quite so brain-meltingly complicated. -- TheDamian, Exegesis 6
Please remember that I'm crufty and crochety. All opinions are purely mine and all code is untested, unless otherwise specified.