in reply to Why use an OO -> SQL mapper module?

Class::DBI::Lite FTW!!!

Seriously though - to answer your question - "Why?" - it comes down to a matter of preference. I prefer to deal with objects when possible - but not at any cost.

If you simply want to loop over the items in your table and do a string substitution on one of their fields, you can setup a "select" statement handle and an "update" statement handle, iterate over the results of your "select" and execute the "update" handle once for each item. Or....

foreach my $widget ( My::db::widget->search_where({foo => 'bar'}) ) { (my $value = $widget->frob) =~ s{blech}{blargh}sig; $widget->frob($value); $widget->update; }

Easier to write and easier to follow 4 lines of code than a dozen or more...