in reply to Updating a database

my $sth=$dbh->prepare('UPDATE Volunteer set Volunteer =?, WHERE =?');

You forgot the field to test for in your WHERE clause and you do not need that comma.

my $sth=$dbh->prepare('UPDATE Volunteer set Volunteer = ? WHERE field_name = ?');

I would recommend not using a field name the same as a table name it tends to cause confusion. I also generally use leading upper case for tables and all lower case for fields, makes it easier to distinguish between fields, tables and SQL statements.

There is an excellent SQL course at http://sqlcourse.com and http://sqlcourse2.com.

grep
grep> cd pub grep> more beer