my @SQL_statements = ( "create table x(i int)", "insert into x values (1)", "update x set i = i * 10 " ); $dbh->begin_work(); for (@SQL_statements) { eval { $dbh->do($_)}; if ($@) { $dbh->rollback(); die "error executing query '$_', $DBI::errstr\n"; } } $dbh->commit();