perl+DBI プログラムの鉄則 のつつき。 鉄則その2. DB に接続したらすぐに別の関数に飛ばし、そこですべての処理を行う。 main 部分は my $dbh = DBI->connect(...) || die "$!"; eval { ... $dbh->commit; $dbh->disconnect; }; if ( $@ ){ $dbh->rollback; $dbh->disconnect; } とだけ書いておく。これは Java で言うところの try ~ catch に相当する。 内部で die すれば if ( $@ ) で引っかかるわけだ。なお、RaiseError を ON にしておかないと、エラーが起こっても自動では die してくれないので 注意。disconnect の部分には、エラーが発生したことをログに記録するなどの 後始末を処理を付け加えること。 t