Mittwoch, 8. Oktober 2008

entwickler.com Magazine Konferenzen Entwickler Akademie Entwickler-Forum Jobbörse Bücher
Software & Support Verlag




April 2006
aus Linux Enterprise Ausgabe: 09.2004
Dreiecksbeziehungen
Neue Module aus dem CPAN
von Johannes Gamperl

Auf dem Comprehensive Perl Archive Network (CPAN) finden Perl-Programmierer unzählige Informationen, die das Leben im Programmieralltag erleichtern. Darunter auch eine umfassende Sammlung von Perl-Modulen, -Routinen und -Programmen für die unterschiedlichsten Aufgaben. In dieser Rubrik stellen wir Ihnen interessante und neue Module und Programme vor. Das CPAN erreichen Sie unter www.cpan.org/.


Haul
Mit dem Modul Haul [1] sind Sie komfortabel an das CPAN angebunden. Es kann feststellen, ob ein bestimmtes Modul auf Ihrem Server vorhanden ist und bei Bedarf neue oder nicht vorhandene Module installieren. Dazu lädt es aus dem CPAN automatisch das entsprechende Packet im Hintergrund und extrahiert dieses in ein dafür vorgesehenes temporäres Verzeichnis, aus dem es abschließend installiert wird.

Tangram
Zur Darstellung von Abhängigkeiten in Datenbanken gibt es zahlreiche Anwendungen. Das Modul Tangram [2] ermöglicht es Ihnen, mit Perl die Abhängigkeiten der Tabellen einer Datenbank zueinander im ASCII-Format optisch darzustellen. Dazu stehen Ihnen unterschiedliche Möglichkeiten zur Verfügung, welche ausführlich dokumentiert sind und deren Vor- und Nachteile explizit beschrieben werden. Dieses Skript ist eine hervorragende Anwendung, um die Struktur bzw. Logik Ihrer Datenbankanwendung optisch darzustellen. Dabei sind Sie, dank dem Ausgabeformat, nicht auf grafische Oberflächen beschränkt, sondern können die Ausgabe auch mittels der Konsole anbieten.

Math::Symbolic
Mit Hilfe von Math::Symbolic [3] können Sie in Ihren Perl-Programmen höher mathematische Berechnungen durchführen, ohne auf externe oder kommerzielle Librarys zurückgreifen zu müssen. Die Anwendung dazu ist denkbar einfach, da Sie alle Berechnungen als String oder Subroutinen definieren - vorausgesetzt, Sie sind mit den relevanten Formeln der jeweiligen Berechnung vertraut. So notiert man beispielsweise für eine Potenz 22 den String 2^2. Viele Routinen und Funktionen für komplexe Berechnungen aus der Algebra oder Analysis wie Logarithmen- oder Dreiecksberechnungen machen dieses Modul besonders wertvoll.

Tk::CollapsableFrame
Tk::CollapsableFrame [4] kann in einem Perl/Tk-Programm als Alternative für Bereiche, die üblicherweise mit Tabs organisiert sind, verwendet werden. Es stellt ein Perl/Tk-Widget zur Verfügung, mit dem ein versteckter Frame in der Vertikalen auf- und zugeklappt werden kann. Dazu werden ein Label sowie die mögliche Höhe des Frames als Objekt definiert. Methoden zum Öffnen und Schließen, zur Rückgabe des aktuellen Zustands sowie zum automatischen Ändern des Zustandes sorgen für ein angenehmes Arbeiten mit diesem Modul.

DBD::Trini
DBD::Trini [5] ist ein mächtiges DBMS-System, welches komplett in Perl programmiert wurde. Die Installation ist dank Perl kinderleicht und sollte mühelos auf allen gängigen Plattformen funktionieren. Mit diesem Modul können Sie Datenbankapplikationen erstellen, ohne auf Produkte wie beispielsweise MySQL angewiesen zu sein. Trini unterstützt wichtige Funktionen wie Commit, Trigger und Rollback. Alle Daten einer Trini-DB werden in einer einzelnen Datei gespeichert. Auch für die Sicherheit ist gesorgt, ein automatischer Journalmechanismus hilft bei der Fehlerdiagnose und der Datenrettung. Eine Distribution Ihrer Anwendung ist mit diesem Modul recht einfach, da von Ihren Usern keine spezielle Datenbankschnittstelle vorausgesetzt werden muss.

Beispiel DBD::Trini
Mit DBD::Trini können Sie auf einfache Weise Datenbankanwendungen erstellen. Die folgenden kurzen Beispiele zeigen die grundlegenden Arbeitsweisen dieses Moduls. Zu Beginn müssen wir dazu zunächst eine neue Datenbank erzeugen, was wie folgt geschieht:

#!/usr/local/bin/perl -w
use strict;
use DBD::Trini;
my ($path, $sql, $dbh, $sth, $i);

# directory where database is stored
$path = 'mydb';

$sql = <<'(SQL)';
create table members
member_pk VARCHAR(5),
name_first VARCHAR(25),
name_last VARCHAR(25),
notes MEMO
(SQL)

# create the database
$dbh = DBI->connect("dbi:Trini:$path", '', '', {'create'=>1});
$dbh->do($sql) or die $DBI::errstr;
$dbh->commit();

Nachdem nun eine neue Datenbank angelegt wurde, können Sie diese mit den gewünschten Inhalten füllen:

# insert
$sql = qq[ insert into members(member_pk, name_first, name_last, notes) values(?,?,?,?) ];
$sth = $dbh->prepare($sql) or die $DBI::errstr;
$i=1;

$sth->execute( $i++, 'Starflower', 'Shanti', 'Totally cool chick') or die $DBI::errstr;
$sth->execute( $i++, 'Paul', 'Ruggerio', 'Dangerous with a spatula') or die $DBI::errstr;

Wie aus dem DBI-Modul gewohnt, bereiten Sie mit prepare() eine Aktion vor, welche Sie dann mit execute() ausführen, in diesem Beispiel das Hinzufügen von Daten. Auch ein Update bestehender Datensätze stellt keine große Herausforderung an den Programmierer.

# updates
$sql = qq[ update members set name_first=? where member_pk=2 ];
$sth = $dbh->prepare($sql) or die $DBI::errstr;
$sth->execute('Guido') or die $DBI::errstr;

Wie Sie erkennen können, wird der Parameter des zu löschenden Datensatzes durch die Methode execute() übergeben, was zudem einen Geschwindigkeitsvorteil bei der Anwendung bringt. Das letzte Beispiel zeigt das Löschen eines bestimmten Datensatzes.

# delete
$sql = 'delete from members where member_pk > ?';
$sth = $dbh->prepare($sql);
$sth->execute(3);

Weitere Beispiele, wie etwa das Auslesen der Datensätze, entnehmen Sie der Anleitung zu dem Modul.

Color::Output
Wollten Sie nicht immer schon farbig schön anzusehende Ausgaben auf der Konsole erzeugen? Mit Color::Output [6] können Sie dies nun ohne großen Aufwand realisieren. Das Modul arbeitet gleichermaßen unter Windows und/oder Unix/Linux. Neben der Ausgabe von farbigen Inhalten bietet das Modul zudem die Möglichkeit, über eine Funktion den aktuellen Bildschirminhalt zu löschen bzw. den Buffer zu leeren.

PerlQt-3.008
Grafische Benutzeroberflächen sind für viele Anwendungen nicht mehr weg zu denken. Auch für Perl gibt es zahlreiche Module zum Erzeugen von GUIs, so auch PerlQt-3.008 [7]. Wie es der Name bereits andeutet, bietet das Modul eine Schnittstelle zu Trolltechs QT-Library [8] für Perl. Die Arbeit dazu gestaltet sich dank der gut sortierten Funktionsbibliothek sehr komfortabel, sodass man schnell zum Ziel gelangt. Dem Modul liegen eine sehr gute Dokumentation und ein Tutorial bei. Steigen Sie ein in die Programmierung grafischer Oberflächen, QT bietet dazu eine plattformunabhängige Umgebung.

Apache::JavaScript::DocumentWrite
Ein langer Name für ein Modul, dafür aber eine umso kürzere Anwendung. ;o) Apache::JavaScript::DocumentWrite [9] können Sie in den Apache-Webserver einbinden, um über eine erweiterte Extension bei Dateien automatisch JavaScript-Code zu erzeugen. Nach der Installation können Sie nun beliebige Dateien (die auch dafür geeignet sind) in ein document.write-Gerüst umformen und so in JavaScript-Anwendungen integrieren. Dazu genügt es, statt der ursprünglichen Datei bsp.html nun bsp.html.js zu notieren.ex::lib::zip [10] ist ein extrem nützliches Modul, mit dem Sie beliebige Dateien aus zip-Archiven auslesen und anwenden können. Damit können Sie beispielsweise alle notwendigen Bibliotheksdateien einer Anwendung in ein Archiv ablegen und mit Hilfe dieses Moduls die jeweils benötigten Routinen direkt daraus beziehen. Dazu sind weder temporäre Dateien noch Unterprozesse für das Auslesen notwendig. Absolut empfehlenswert!
Johannes Gamperl ist freier Journalist und selbstständiger Programmierer. Im Internet ist er unter seiner Firmenseite www.jg-webdesign.de, seinem Weblog www.jg-privat.de oder seinem Portal für Webentwickler www.devshare.de zu erreichen.


Links


    Hat Ihnen dieser Artikel gefallen? Dann abonnieren Sie das Entwickler Magazin direkt über unser Online-Formular.

zur vorherigen Seite
zurück
an den Anfang der Seite
nach oben
Diesen Artikel drucken
drucken
Diesen Artikel weiterempfehlen
empfehlen

Software & Support Verlag GmbH