Most web applications have a single user accessing the database. When I say single user I mean a single DATABASE user. However, most databases are designed such that users are granted privileges. Check:
Principle of Least Privilege.
Views are awesome. They let you define a query and treat that query as a table. So you can easily sort and filter on aggregate values and limit what certain users can see. It can severely reduce the amount of complex SQL that is sprinkled throughout your code - instead of multiple long join queries there are smaller ones that are easier to digest.
I don't think interacting with a view via Class::DBI would be beneficial, you don't update a view but rather the tables behind the view. People are mentioning updatable views, but to me that seems wicked because your view could contain aggregate data, and then what?