if ($DBI::err) { if ($DBI::err eq '1062') { # taken from mysqld_error.h # duplicate.. try an update unless ($update->execute( $gamedesc, $gamename )) { die sprintf('UPDATE failed: %s %s', $gamename, $DBI::errstr); } } else { die sprintf('INSERT failed: %s %s', $gamename, $DBI::errstr); } }