in reply to DBI driver

As others have noted, you choose your driver based on the database you wish to access. As best as I know DBI = DB I(nterface) and DBD = DB D(river). The driver for each database is wrapped up into a separate module named for the database, e.g. DBD::Oracle, DBD::MySQL, DBD::CSV, etc.

But others said all that. I wanted to point out that there are some databases that do not have drivers (MS-SQL, MS-Access). However, even in those cases you can use DBI by using the handy-dandy super-useful ODBC driver. ODBC (Open DB Connectivity, I think) allows you to access most databases via a common protocol. It is generally slower to access a database through DBD::ODBC than it is through the generic driver, _but_ code written DBD::ODBC can be highly cross-DB portable. Further, there are those cases where you _must_ use DBD::ODBC because no generic driver exists. If you are on a *NIX system, then ODBC set-up isn't trivial, but isn't back-breaking either. If you are in a WinXX system then ODBC setup is trivial.

-Tats