Algorithm::Loops produces the fastest and least memory-intensive code out there for what it does. Handling permutations and loops nested to arbitrary depth are the jems of the module, and both allow for iterator usage. The documentation is very complete. The the Filter, MapCar*, and NextPermute functions are easy to use. NestedLoops seems rather difficult to apply because it solves a few big problems in a different way than many programmers think of them. The difficulty is not knowing how or when to use the function, despite the many examples in the POD.