eval { my $sth = $dbh -> prepare (<<' --'); update new_table set newData = ? where newID = ? -- while (my ($id, $data) = each %Data) { $sth -> execute ($data, $id) } }; if ($@) { $dbh -> rollback; die $@; } else { $dbh -> commit; }