First off, you want to add
use strict; to your code. I believe the reason why it's not working on Solaris is due to the missing username and password. Although Access doesn't have a username or password, you may have to pass along empty strings for it to work. Try using:
$dbh = DBI->connect("dbi:Proxy:$proxy;$compression;dsn=$dsn", '', '')
For the above question, turn on debugging:
dbiproxy --localport 3333 --logfile "STDERR" --compression gzip --debugHopefully this will give you some helpful hints with the errors.