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/.
Text::RecordParser
Text::RecordParser [1] wurde für das Arbeiten mit Daten im CSV-Format entwickelt. Das Modul ist dabei sehr flexibel, da die Begrenzungszeichen und Zeilentrenner individuell eingestellt werden können. Zeilen, die mit bestimmten Merkmalen beginnen, können ausgeschlossen werden, was beispielsweise für Kommentarzeilen sinnvoll ist. Besonders nützlich ist die Möglichkeit, die Information der ersten Zeile als Feldnamen zu verwenden. Für die sinnvolle Arbeit mit den gewonnenen Daten sorgen durchdachte Routinen und Hashstrukturen. Wer viel mit Textdatenbanken arbeiten muss, wird die einfache Handhabung dieses Moduls schnell zu schätzen lernen.
Beispiel Text::RecordParser
Um Ihnen die Funktionsweise dieses Moduls in Kürze zu erläutern, zeigen wir Ihnen im Folgenden eine Auswahl der unterschiedlichen Möglichkeiten, die
Text:RecordParser zu bieten hat. Eine kurze Erklärung erfolgt jeweils als Kommentarzeile.
use Text::RecordParser;
my $p = Text::RecordParser->new;
$p->filename('foo.csv');
# Die Datensätze werden jeweils nach zwei Leerzeilen eingelesen
$p->record_separator("\n\n");
# Felder anhand eines Tabstops splitten
$p->field_separator("\t");
# Zeilen die mit eimem # beginnen ignorieren
$p->comment( qr/^#/ );
# Die Feldinformationen der ersten Zeile als Kopfzeile verwenden
$p->bind_header;
# Liste der Kopfzeilen ausgeben
my @columns = $p->field_list;
# Bestimmte Felder aus einer Zeile auslesen
my ( $name, $age ) = $p->extract( qw[name age] );
# Alle Felder einer Zeile auslesen und in einem Array speichern
my @fields = $p->fetchrow_array;
# Alle Felder einer Zeile auslesen und als Hashref speichern
my $record = $p->fetchrow_hashref;
print $record->{'name'};
# Alle Daten auf einmal als Arrayref aus einem Arrayrefs beziehen
my $data = $p->fetchall_arrayref;
# Alle Daten auf einmal als Hashref aus einem Hashref beziehen
my $data = $p->fetchall_arrayref( { Columns => {} } );
GD::Text
GD::Text [2] hilft Ihnen, Text in Grafiken, die mit Hilfe des Moduls GD [3] erzeugt werden, einfach einzubinden. Dazu stehen Ihnen einfach anzuwendende Methoden zur Verfügung, mit denen Sie den gewünschten Schrifttyp, die Größe und die Information selbst in eine dynamisch erzeugte Grafik einbinden können. Darüber hinaus können Sie die Pixelmaße der Höhe und Breite eines Strings dynamisch ermitteln, was in etlichen Fällen sehr hilfreich sein kann.
RPM::Info
Wie es der Name bereits andeutet, ermittelt
RPM::Info [4] Informationen aus installierten Distributionen im RPM-Format. Damit erhalten Sie Details über den Programmnamen, die Version, die komplette Verzeichnisstruktur des Programms, den Namen des Distributors und etliche weitere nützliche Daten. Mit diesem Modul sind Sie daher stets auf dem Laufenden über Ihre installierten Programme.
MyConTex
Mit
MyConTex [5] erhalten Sie eine einfache Lösung, um einen Index aus Ihren Dokumenten zu erzeugen. Dazu speichert das Modul die relevanten Informationen, also beispielsweise Wörter und die entsprechenden Dokumentennamen, in einer MySQL-Datenbank. Für die Indexierung können Sie Pfadangaben oder eine URL angeben. Spezielle Methoden erlauben es nun, den Index in verschiedenen Kombinationen zu durchsuchen. So können Sie bestimmte Wörter ausgrenzen oder eine Reihe von Kombinationen voraussetzen.
Text::Oyster
Das Modul
Text::Oyster [6] evaluiert in einem Text oder einer Textdatei eingebundenen Perl-Code. Dazu können Sie eigene Begrenzungszeichen wie beispielsweise
<?perl ?> verwenden. Nach dem Einlesen des Textes oder der Datei werden nun Inhalte mit
<?perl $anweisung ?> korrekt ausgewertet. Damit können Sie auf einfache Weise komplexe Abläufe in Templatevorlagen realisieren.
Acme::Stegano
Geheime Nachrichten eingebettet in Dateien, das ist nichts neues, aber nicht für jedermann praktisch anwendbar. Mit
Acme::Stegano [7] können Sie ohne Aufwand Textinformationen in einer Datei einbinden. Der Betrachter sieht hier nur den ursprünglichen Inhalt. Die versteckte Nachricht selbst können Sie dann mit einer Methode des Moduls bequem entschlüsseln.
File::Modified
File::Modified [8] wurde ursprünglich dazu entwickelt, Konfigurationsdateien dynamisch auf Änderungen zu testen. Es ermöglicht Ihnen den Status einer Datei in Ihren Programmen zu überwachen und dies zur Laufzeit. Sie können dabei beliebig viele Dateien auf einmal überwachen. Anhand einer speziellen Methode erhalten Sie eine Liste aktuell geänderter Dateien und können so falls notwendig darauf reagieren.
Acme::SoftwareUpdate
Mit
Acme::SoftwareUpdate [9] halten Sie Ihre Kunden stets auf dem Laufenden zu neuen Versionen Ihrer Anwendung. Dazu müssen Sie das Modul in Ihre Programme integrieren und eine Variable einbinden, welche über die Version Auskunft gibt (üblicherweise
$VERSION). Wird die Anwendung nun ausgeführt, erfolgt im Hintergrund eine Prüfung, ob eine neuere Version verfügbar ist. Sofern dies der Fall ist, kann eine entsprechende Nachricht ausgegeben werden. Der Anwender kann nun entscheiden, ob er ein automatisches oder ein Update per Hand durchführen möchte. Voraussetzung dabei ist, dass Sie Ihre Distribution auf CPAN veröffentlicht haben.
Wx::Perl::TreeChecker
Mit
wxPerl [10] ist es möglich, plattformunabhängige grafische GUI-Anwendungen mit Perl zu erstellen.
Wx::Perl::TreeChecker [11] ist ein Modul, das Ihnen eine Baumstruktur mit Checkboxfunktionalität zur Verfügung stellt. Auf diese Weise können Sie Ihre Anwendungen mit einer Explorer-Funktionalität ausstatten.
File::LineEdit
File::LineEdit [12] ist ein kleines Utility, um Dateien zeilenweise zu bearbeiten. Dabei müssen Sie sich nicht mehr um Filehandles und das Einlesen der Datei selbst kümmern. Lediglich ein Zeiger auf die gewünschte Datei wird dem Modul übergeben. Anschließend erhalten Sie den Inhalt wie üblich in einer geeigneten Datenstruktur zurück und können nun mit der entsprechenden Modifikation beginnen. Am Ende werden die geänderten Daten automatisch in die Datei zurück geschrieben.
Apache::AuthExpire
Mit Hilfe von
Apache::AuthExpire [13] und in Verbindung mit
mod_perl können Sie die Funktionalität von
.htaccess-Dateien erweitern. In vielen Fällen werden Sie Inhalte auf Ihrem Webangebot mit dieser Mechanik schützen. Das Modul erlaubt Ihnen ein Zeitlimit für den Zugriff auf entsprechende Inhalte vorzugeben, welches den Zugriff verweigert, falls ein Anwender für diese Zeit untätig war. In der aktuellen Version des Moduls ist zu beachten, dass diese Anwendung nicht in allen Browsern korrekt unterstützt wird.
HTML::TagReader
Das Modul HTML::TagReader [14] analysiert beliebige Tags innerhalb von HTML-, SGML- oder XML-Dateien. Jeder Treffer wird bei Bedarf mit der dazugehörigen Zeilennummer angezeigt. Dies kann beispielsweise für die Fehlersuche (z.B. nicht korrekt geschlossene HTML-Tags) oder das Prüfen auf wohlgeformte Dokumente sinnvoll sein.
Johannes Gamperl ist freier Journalist und selbstständiger Programmierer. Im Internet ist er unter seiner Firmenseite www.jg-webdesign.de/ oder seinem Portal für Webentwickler www.devshare.de/ zu erreichen.
Linksammlung