Class::DBI isn't a database abstraction layer and its authors never intended it to be. It's just a library for saving some typing on the kind of repetitive SQL that you could write but shouldn't have to. On the projects where I've used it, I just switched over to manual SQL any time I needed to deal with something beyond single-table CRUD statements. If you don't expect too much from it, it can be a time-saver.