Just a TIMTOWTDI thought. I do not have time to benchmark now, but will get to it later if nobody does it before I get the chance. The "right" way example presented by jZed prepares the statement once then executes multiple times for each value. In such situations, I tend to do this another way. I form a statement that will do all changes in one blow, then run that through. My method of doing it the "right" way is as such:
my $sta = 'UPDATE foo SET bar=? WHERE ';
$sta .= (join ' OR ', ('baz=?') x @values);
my $sth = $dbh->prepare($sta);
$sth->execute(7, @values);