Rose::DB::Object is looking good to me these days. It can handle pretty complex queries and lets you use SQL if you need to. It also appears to be much faster than the others on a benchmark written by the author. I haven't used it in production code yet though.