gegenfrage: wenn du im moment jedes statement in ein eval packst, um danach $@ abzufragen, wieso benutzt du dann überhaupt RaiseError? dann könntest du RaiseError auch auf 0 setzen und einfach $dbh->errstr abfragen.
Oder einfach einen errorhandler mit HandleError setzen, der aufgerufen wird, falls ein Fehler auftritt.