Assertions are a good thing: by writing them you are documenting your code and make it safer at the same time.
On top of that, you can (mostly) eliminate the performance cost of these assertions (e.g. by setting an environment variable) in your production code.
I really don't mind writing an "if DEBUG" after each assertion.
I found this module because I wanted persistent objects that are stored in a database, but you can use it for far more than that.
If you happen to write similar code over and over again using the same database tables, take a look at this module: it will make your life so much easier!
And what I also find very useful is the simulation of foreign keys, even if the db-engine you're using doesn't support them. That makes writing either nested loops in your Perl code or writing complicated joins in SQL obsolete for selects. And it helps keeping referential integrity when making deletes.
The documentation is also very good: clear and concise.