I took a look at all them as well. The two I really tried experimenting with with DBIx::Class and Rose::DB::Object. One thing I did not like about DBIx::Class was that it focused on using SQL::Abstract a bit much, and that module cannot really handle complicated SQL very well. Also SQL::Abstract has problems when your database structure has 'issues'. You can customize some parameters to try and get around it but it become a hassle and did not offer anything better than writing custom SQL did.
Another issue I encountered, is that both are dependent upon a reasonable database structure. The project I was trying to us them in, did not have one (don't ask me why I just had to work with the dam thing). For examples, tables scattered across multiple schema's and using column names which are also SQL keywords, example LEVEL is an oracle keyword.
My point is, that sometimes, your underlying structure is so bad that you cannot rely upon on the ORM modules to help you fix it. Just a warning...