Donnerstag, 4. Dezember 2008

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




April 2006
aus Linux Enterprise Ausgabe: 04.2003
Perlhuhn
Neue Module aus dem CPAN
von Johannes Gamperl



Net::FTPServer
Mit Net::FTPServer [1] erhalten Sie einen sicheren FTP-Server mit vielen Funktionen. Verbindung zum Server als Anonymous oder Virtuelle Dateisysteme aus Datenbanken sind hierbei Standard. Das System unterstützt alle gängigen Internet-Spezifikationen, darunter MLST, MLSD, FEAT, OPTS und LANG. Kurzum Sie erhalten einen stabilen und gut zu administrierenden FTP-Server auf Basis von Perl.

Data::DumpXML
Das Modul Data::DumpXML [2] erzeugt aus einer Liste von Werten eine XML-Datei. Mit der Funktion dump_xml() kann jede Datenstruktur als XML-Dokument dargestellt werden. Somit erhalten Sie eine anschauliche Struktur der übergebenen Daten, die beispielsweise ein Array, Hash oder eine beliebige Referenz darstellen kann.

Image::Filter
Image::Filter [3] ermöglicht Ihnen die Anwendung zahlreicher Filter auf Grafiken im jpeg-Format. Dieses Modul verwendet die Library gd2, welche Sie auf Ihrem System installiert haben müssen. Effekte wie das Pixeln von Grafiken oder das Anwenden von Unschärfe werden hier zum Kinderspiel. Auch aufwändigere Filter wie ein Swirl, Twirl oder das Umwandeln in ein Ölbild sind mit wenigen Handgriffen erledigt.

Attribute::Default
Beim Einsatz von Subroutinen haben Sie sich sicherlich schon öfters die Möglichkeit zum Setzen von Default-Werten gewünscht. In Perl 5.x wurde dies leider nicht implementiert. Attribute::Default [4] erlaubt es Ihnen, für jede Subroutine Standardwerte für die angeforderten Argumente zu belegen. Ein durchaus interessantes und nützliches Modul.

Text::ASCIITable
Text::ASCIITable [5] erstellt komplexe und schön formatierte Tabellen im ASCII-Format. Das Aussehen der Tabelle kann über eine Methode auf einfache Weise nach eigenen Wünschen angepasst werden. Dem Modul liegen in der Distribution einige Beispiele zum Experimentieren bei. Für die Gestaltung der Inhalte können Sie die Texte links-, rechtsbündig oder zentriert ausgeben. Die Zelleninhalte können sich über mehrere Zeilen, mittels Zeilenumbruch, erstrecken oder mittels Wordwrap anhand einer bestimmten Zeichenanzahl in der Länge begrenzt werden.

SETI::WebStats
Für alle Alienjäger unter uns dürfte das Modul SETI::WebStats [6] interessant sein. Es ermöglicht das Abrufen von Userstatistiken von SETI@home, zu welchen Sie über einen Account Zugriff haben. Auf diese Weise können Sie auf alle statistischen Informationen zugreifen, welche auf den Daten, die über Ihren Rechner erforscht wurden, beruhen. Das Modul bietet Methoden, um Informationen des Users, seines Rankings sowie der einzelnen Statistikbestandteile zu beziehen.

Tk::DateEntry
Tk::DateEntry [8] liefert Ihnen ein so genanntes Drop-Down-Widget für die Auswahl eines Datums. Das Widget hat ein Eingabefeld für das Datum und einen Button zum Öffnen des Kalender-GUIs. In diesem kann nun ein bestimmtes Datum ausgewählt oder im Monat bzw. Jahr vor und zurück geblättert werden. Beim Öffnen des Kalenders werden das Monat und Jahr dargestellt, zu dem der Anwender die Daten eingetragen hat. Nützliche Shortcuts wie zum Beispiel das Blättern des Monats mittels Tastaturbelegung runden dieses nützliche Tk-Widget angenehm ab.

grepmail
grepmail [9] sucht in einer Mailbox nach bestimmten Strings. Die Suche erfolgt hierbei standardmäßig im Header und Body der Nachrichten. Für den gesuchten Begriff können Sie reguläre Ausdrücke verwenden. Um die Ergebnisse zu verfeinern, bietet dieses Programm eine Reihe von Parametern, um beispielsweise nach Beiträgen mit einer bestimmten Dateilänge zu suchen. Sie können mit grepmail sogar Nachrichten von einer Mailbox in eine andere verschieben bzw. kopieren.

PHP::Include
Das Modul PHP::Include [10] ermöglicht die Verwendung von PHP-Dateien in Ihren Perlprogrammen. Dabei wird der PHP-Code der gewünschten Datei automatisch in Perlcode umgewandelt und ausgeführt. Ein Debug-Modus erlaubt es Ihnen zu testen, ob die eingebundene Datei auch wie vorgesehen funktioniert. Für versierte Anwender bietet sich die Möglichkeit, eigene Regeln für die Umwandlung von komplexen PHP-Strukturen einzubinden.

Apache::FileManager
Apache::FileManager [11] ermöglicht das Bearbeiten der Inhalte von Verzeichnissen in Verbindung mit mod_perl und dem Apache-Webserver. Sie können mit diesem Modul die gewünschten Dateien editieren, löschen, verschieben oder umbenennen. Verzeichnisse und Dateien können neu erstellt und Archiv-Dateien entpackt werden. Zudem können Sie auf einfachste Weise eine komplette Webstruktur spiegeln.

Data::Grouper
Data::Grouper [12] hilft Ihnen, komplexe Datenstrukturen zur Übergabe an Template-Module aufzubereiten. Üblicherweise können diese Abfragen aus einer Datenbank sein, die dann über verschachtelte Schleifen in einem Template ausgegeben werden. Dieses Modul arbeitet unter anderem mit HTML::Template zusammen. Etliche Beispiele helfen Ihnen bei der Umsetzung eigener Ausgaben.

PPM::Make
Um Ihre Module auch für Anwender von Windows tauglich zu machen, bietet sich die Distribution via Perl von ActiveState [14] an. PPM::Make [13] erzeugt für Sie alle dazu notwendigen Dateien. Dabei wird aus der POD-Dokumentation automatisch eine HTML-Version erstellt und die relevanten Dateien werden in ein Archiv verpackt. Ein mitgeliefertes Skript ermöglicht die Arbeit mit diesem Modul aus der Kommandozeile heraus.

Games::Backgammon
Wie der Name schon verrät, ermöglicht das Modul Games::Backgammon [15] die Programmierung eines Backgammon-Spiels. Es überwacht die Züge der Spieler und zeichnet darauf basierend das Spielbrett neu. Bei diesem Vorgang merkt sich das Skript die Punkte der jeweiligen Spieler, welche dann über eine Methode ausgegeben werden können.

Beispiel Text::ASCIITable
Das folgende Skript zeigt, wie die Ausgabe einer ASCII-Tabelle mit diesem Modul in der Konsole aussieht. Im ersten Beispiel wird die Tabelle in einem Standardlayout dargestellt. Sie können für Ihre Ausgabe auch eine individuelle Schablone über die Methode draw() verwenden. Mit alignCol() wird die Ausrichtung bestimmter Felder definiert, setCols() bestimmt die Tabellenzellen und addRow() fügt Einträge zur Tabelle hinzu. Sinnvollerweise sollten die Daten für die Tabelle aus einer geeigneten Datenstruktur stammen, die dann über eine Schleife dynamisch dazugefügt werden.

#!/usr/bin/perl

use strict;
use Text::ASCIITable;

my $t = new Text::ASCIITable;
$t->setCols(['Vorname','Name','E-Mail']);
$t->alignCol('E-Mail','right');
$t->addRow('Johannes','Gamperl','info@jg-webdesign.de');
$t->addRow('Alexandra','Huth','ah@irgendwas.de');
$t->addRow('Franz','Mustermann','franz@irgendwas.de');
print $t->draw();

.-----------+------------+----------------------.
| Vorname | Name | E-Mail |
>----------+------------+---------------------<
| Johannes | Gamperl | info@jg-webdesign.de |
| Alexandra | Huth | ah@irgendwas.de |
| Franz | Mustermann | franz@irgendwas.de |
'-----------+------------+----------------------'

$t->draw( ['.','.','-','-'], # .-------------.
['|','|','|'], # | feld | feld |
['|','|','-','-'], # |-------------|
['|','|','|'], # | feld | feld |
[' \\','/ ','_','|'] # \_____|_____/
);

.-----------------------------------------------.
| Vorname | Name | E-Mail |
|-----------------------------------------------|
| Johannes | Gamperl | info@jg-webdesign.de |
| Alexandra | Huth | ah@irgendwas.de |
| Franz | Mustermann | franz@irgendwas.de |
\__________|____________|_____________________/

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