Sorting may seem "simple," and sometimes it is. But when you need to be able to dynamically sort things in unexpected ways and still be reasonably fast for non-trivial data sets, the complexity mounts. Scattering sort optimization logic in a dozen places throughout your application is a maintance nightmare. That's when you realize you need Sort::Maker.
I encountered this same need years ago, before Sort::Maker had been published, and ended up writing the Data::Sorting module, which uses many of the same techniques, but for future applications I think I'll reach for Sort::Maker first.
1 hidden unhelpful review