Years ago, I made a program that compared database objects
(not just tables), and reported the differences (column names,
column types, order in which columns appeared, constraints,
presence of triggers and indices, etc). But that was for
Sybase, and there all the information is available in SQL
tables, making it rather easy.
I could also compare the SQL object creation code
with what was present in the database. I did not attempt to parse
the SQL using a Perl program - I simply loaded the object in an another database, and compared the newly created object
with the object already there.
Unfortunally, I don't have easy access to the code anymore.