my $dbh = DBI -> connect ("DBI:$driver:database=$db;host=$host", $user, $password, {RaiseError => 1, PrintError => 0, AutoCommit => 0, Taint => 1}) or die "Failed to connect: $DBI:errstr\n"; ... eval { my $sth = $dbh -> prepare ($cmd); $dbh -> execute (@variables); while (my @row = $dbh -> fetchrow_array) { ... process @row ... } $dbh -> commit; }; if ($@) { $dbh -> rollback; croak "Database query failed: $@"; }