Perl FAQ 1.20: What is dbperl and where can I get it?

Perl FAQ 1.20

What is dbperl and where can I get it?

Many database-oriented extensions to Perl have been written. Basically, these use the usub mechanism (see the usub/ subdirectory) in the source distribution) to link in a database library, allowing embedded calls to Informix, Ingres, Interbase, Oracle and Sybase.

Here are the authors of the various extensions:

What            Target DB       Who
--------        -----------     ----------------------------------------
?Infoperl       Informix        Kurt Andersen (kurt@hpsdid.sdd.hp.com)
Ingperl         Ingres          Tim Bunce (timbo@ig.co.uk) and Ted Lemon
Interperl       Interbase       Buzz Moschetti (buzz@bear.com)
Isqlperl        Informix        William Hails bill@tardis.co.uk
Oraperl         Oracle          Kevin Stock (kstock@Auspex.com)
Pgperl          Postgres        Igor Metz (metz@iam.unibe.ch)
*Sqlperl        Ingres          Ted Lemon (mellon@ncd.com)
Sybperl         Sybase          Michael Peppler (mpeppler@itf.ch)
Uniperl         Unify 5.0       Rick Wargo (rickers@coe.drexel.edu)

    ? Does this one still exist?
    
*Sqlperl appears to have been subsumed by Ingperl

Buzz Moschetti* has organized a project to create a higher level interface to allow you to write your queries in a database-independent fashion. If this type of project interests you, send mail to <perldb-interest-request@vix.com> and asked to be placed on the ``perldb-interest'' mailing lists.

Here's a bit of advertising from Buzz:

Perl is an interpreted language with powerful string, scalar, and array processing features developed by Larry Wall that ``nicely bridges the functionality gap between sh(1) and C.'' Since relational DB operations are typically textually oriented, perl is particularly well-suited to manage the data flows. The C source code, which is available free of charge and runs on many platforms, contains a user-defined function entry point that permits a developer to extend the basic function set of the language. The DBperl Group seeks to exploit this capability by creating a standardized set of perl function extensions (e.g. db_fetch(), db_attach()) based on the SQL model for manipulating a relational DB, thus providing a portable perl interface to a variety of popular RDMS engines including Sybase, Oracle, Ingres, Informix, and Interbase. In theory, any DB engine that implements a dynamic SQL interpreter in its HLI can be bolted onto the perl front end with predicatable results, although at this time backends exist only for the aforementioned five DB engines.

The official archive for DBperl extensions is ftp://ftp.demon.co.uk/pub/perl/db It's the home of the evolving DBperl API Specification. Here's an extract from the updated README there:


DBI/        The home of the DBI archive. To join the DBI mailing list
	    send your request to perldb-interest-REQUEST@vix.com

DBD/        Database Drivers for the DBI ...

Oracle/      By Tim Bunce (not yet ready!)
Ingres/      By Tim Bunce (not yet started!)

mod/           Other Perl 5 Modules and Extensions ...

Sybperl/    By Michael Peppler, mpeppler@itf.ch

perl4/         Perl 4 extensions (using the usub C interface)

   oraperl/   ORACLE 6 & 7  By Kevin Stock, kstock@auspex.com
   sybperl/   SYBASE 4      By Michael Peppler, mpeppler@itf.ch
   ingperl/   INGRES        By Tim Bunce timbo@ig.co.uk and Ted Lemon
   isqlperl/  INFORMIX      By William Hails, bill@tardis.co.uk
   interperl/ INTERBASE     By Buzz Moschetti, buzz@bear.com
   oraperl/   ORACLE 6 & 7  By Kevin Stock (sadly no longer on the net)
   sybperl/   SYBASE 4      By Michael Peppler, mpeppler@itf.ch
   ingperl/   INGRES        By Tim Bunce timbo@ig.co.uk and Ted Lemon
   isqlperl/  INFORMIX      By William Hails, bill@tardis.co.uk
   interperl/ INTERBASE     By Buzz Moschetti, buzz@bear.com
   uniperl/   UNIFY 5.0     By Rick Wargo, rickers@coe.drexel.edu
   pgperl/    POSTGRES      By Igor Metz, metz@iam.unibe.ch

   btreeperl/ NDBM perl extensions.   By John Conover, john@johncon.com
   ctreeperl/ C-Tree perl extensions. By John Conover, john@johncon.com
   duaperl/   X.500 Directory User Agent. By Eric Douglas.

scripts/       Perl and shell scripts

   rdb/       RDB is a perl RDBMS for ASCII files. By Walt Hobbs,
		hobbs@rand.org
   shql/      SHQL is an interactive SQL database engine.  Written as a
		shell script, SHQL interprets SQL commands and
		manipulates flat files based on those commands. By
		Bruce Momjian, root@candle.uucp
   xbase/     Perl scripts for accessing xBase style files (dBase III)

refinfo/       Reference information

   sqlsyntax/ Yacc and lex syntax and C source code for SQL1 and SQL2
	from ftp.uu.net:/pub/uunet/published/oreilly/nutshell/yacclex,
	and a draft SQL3 syntax from Jeff Fried <jfried@informix.com>+
   formats/   Details of file formats such as Lotus 1-2-3 .WK1

There are also a number of non SQL database interfaces for perl available from ftp.demon.co.uk. These include:

Directory   Target System   Authors and notes
---------   -------------   -------------------------------------------
btreeperl   NDBM extension  John Conover (john@johncon.com)
ctreeperl   CTree extension John Conover (john@johncon.com)
duaperl     X.500 DUA       Eric Douglas
rdb         RDBMS           Walt Hobbs (hobbs@rand.org)
shql        SQL Engine      Bruce Momjian (root@candle.uucp)


Other resources at this site: