It's been a few years ago that I used Sybase. But I can think of four possible ways, if I remember the Sybase details correctly:
Get the list of processes. See if your alter database is still running.
When doing an alter database, Sybase is sending messages. If you are using isql, these message will be displayed. If you're using Sybperl, you can set up a message handler (a callback) which will be triggered on each message. Use that to track progress. I do not know whether DBD::Sybase gives you access to the messages. (These are the same messages as will appear in the Sybase log file).
Watch the Sybase log file.
Sybase uses a system table to keep track of which disk partitions it's using for the database (syssegments, IIRC). This is probably your best bet, if the table gets updated after the alter database finishes. But it's too long ago to recollect whether it does before, or after.
I'm sure mpeppler will correct me where I'm wrong.