I was about to post and say that while DBD::ODBC is preferable from a programming standpoint, it has the inconvenience that it requires you to setup an explicit DSN in your ODBC Data Sources area. But I would have been wrong! To quote from the POD:
Example (using MS Access): my $DSN = 'driver=Microsoft Access Driver (*.mdb);dbq=\\\\cheese\\g$\\perltest.mdb'; my $dbh = DBI->connect("dbi:ODBC:$DSN", '','') or die "$DBI::errstr\n";
Obviously, the usual caveats about using Access programmatically apply (it's a single user database so watch out for threading and locking issues, it should be located preferably on the same machine as the application or at least within the same LAN, etc). I had the experience of trying to programmatically fetch data from .MDB files on machines halfway across a large corporate Intranet. It wasn't pretty.