Perl bietet mit dem DBI-Modul (Perl Database Interface) eine mächtige Schnittstelle zu Datenbanken, über die Sie fast alle Datenbanken mit einer einheitlichen Syntax ansprechen können. Dazu zählen unter anderem Access, Oracle, Post-greSQL, Sybase und MySQL. Ein großer Vorteil bei dem zu Grunde liegendem Konzept ist, dass Sie in den meisten Fällen mit der Änderung einer einzigen Anweisung zu einer belie-bigen anderen Datenbank wechseln können. DBI wartet mit einer ganzen Reihe nützlicher Methoden auf, die Ihnen das Arbeiten mit Datenbanken sehr einfach machen. Zudem ist DBI, wie natürlich auch Perl, völlig plattformunabhängig.
Zumindest unter Suse Linux kann es sein, das bei der Standart Perl Installation noch andere Module mitinstalliert werden müssen.
z.B. Das DBI-Modul Paket "perl-DBI".
und für Mysql "perl-Msql-Mysql-modules".
Zumindest war es bei mir unter SUSE 8.0 so.
Alles was hinter einem "#" steht ist ein Kommentar im Original.
Alles was hinter "// " steht und grün ist, ist ein Kommentar von mir
#!/usr/bin/perl -w
use DBI; // mit "use" werden die benötigten Module Geladen.
use strict;
use CGI::Carp qw(fatalsToBrowser);
my $datenbank = "Der Datenbankname";
my $username = "der Benutzername";
my $passwort = "das Passwort";
my $hostname = "der Hostname";
my $mysqlport = "3306";
// Für Anwendung auf einem anderen Server kann man diesen Aufruf benutzen.
#my $data_source = "DBI:mysql:database=$datenbank;host=$hostname;port=$mysqlport";
// Für die lokale Anwendung reicht dieser Aufruf aus.
my $data_source = "dbi:mysql:$datenbank";
// jetzt wird sich mit der Datenbank verbunden, oder eine Fehlermeldung ausgegeben.
my $dbh = DBI->connect($data_source, $username, $passwort)|| die "Fehler: $DBI::errstr\n";
#Den Datenbankaufruf
my $statement = "SELECT * FROM driver ORDER BY points DESC";
// Den Aufruf überprüfen.
my $sth = $dbh->prepare($statement) || die $dbh->errstr;
// Den Aufruf ausführen.
my $success = $sth->execute() || die $sth->errstr;
my @zeile; // Ein Array.
my $i = 0;
my $result = "";
while (@zeile = $sth->fetchrow_array) // Die Ergebnisse in ein Array einlesen.
{ # 3. Schritt
$i++;
$result .= "$zeile[0]. $zeile[2] Punkte= $zeile[5] .<BR>\n"; // Den Ergebnisstring zusammenbauen.
}
// Jetzt die Ausgabe an dden Browser.
print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Test-Ausgabe</title></head><body>\n";
print "Hallo <BR>Die Anzahl der Datensätze beträgt <b>$i</b><br>\n";
print "$result";
print "</body></html>\n";
// Die Datenbankverbindung trennen.
$dbh->disconnect || "Fehler:$DBI::errstr\n";