I've never worked with Sybase, but I know that DBI has a connect_cached method. It checks a cached connection to find out if its dead before it opens a new connection. I use this often to ensure my db connections (MySQL, Oracle) are valid before running an operation.
Good idea, but the DBI->connect_cached() only really applies when you are attempting to make a connection. In my particular situation, where the db connection dies, I have to reconnect within the error handler routine (see the update to the OP for where we're at now).