Donnerstag, 21. August 2008

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




April 2006
aus Linux Enterprise Ausgabe: 07/08.2004
Piraten!
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/.


Tie::FTP
Tie::FTP [1] ermöglicht es, auf Dateien via FTP-Protokoll als Filehandle zuzugreifen. Dabei werden die ausgewählten Dateien auf lokaler Ebene temporär zur Bearbeitung abgespeichert und nach erfolgter Arbeit beim speichern wieder auf den Server zurück geschrieben. Voraussetzung dazu sind natürlich entsprechende Zugriffsrechte auf dem Zielserver.

Array::Dissect
Mit Array::Dissect [2] erzeugen Sie aus den Elementen eines Arrays neue Arraystrukturen. Dazu wählen Sie zwischen zwei Möglichkeiten. Mit dissect() erreichen Sie die Aufteilung des Arrays nach Spalten, wobei reform() das Array nach Zeilen aufteilt. Die jeweilige Dimension wird als Parameter den Methoden übergeben. Das Ergebnis kann anschließend in ein weiteres Array oder einer Referenz übergeben und weiter verarbeitet werden. Eine typische Aufgabe für das Reformatieren eines Arrays ist die Ausgabe der Daten in Tabellenform, wobei es die Daten nach Spalten oder Zeilen aufzuteilen gilt.

Beispiel Array::Dissect
Das Modul Array::Dissect erlaubt es Ihnen, komfortabel die Sortierung eines Arrays umzustellen. Wie eingangs bereits erwähnt, kann dies beispielsweise dazu verwendet werden, um aus den Daten eines Arrays eine Tabellenausgabe zu erzeugen, etwa um nach jedem dritten Eintrag eine neue Zeile beginnen zu lassen. Das folgende Beispiel zeigt die Anwendung des Moduls. Wir verwenden hier ein Array mit den Zahlen von 1 bis 10 und legen eine Aufteilung der Struktur nach drei Spalten:

use Array::Dissect qw( :all );

@sample = ( 1 .. 10 );
$rowsize = 3;

reform( $rowsize, @sample );

Mit reform() werden die Daten zeilenweise aufgeteilt. Als Ergebnis erhalten Sie das folgende Array:

=> (
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ],
[ 10 ]
);

dissect( $rowsize, @sample );

Mit dissect() wird das Array spaltenweise aufgeteilt. Das Ergebnis sieht nun wie folgt aus:

=> (
[ 1, 5, 9 ],
[ 2, 6, 10 ],
[ 3, 7 ],
[ 4, 8 ]
);

Wie Sie erkennen können, sind die Daten nun jeweils in einer neuen Struktur verfügbar. Nun können Sie diese nach Ihren Anforderungen entsprechend weiter verarbeiten.

Data::Password::BasicCheck
Das Modul Data::Password::BasicCheck [3] ermöglicht es, die Syntax von Passwörtern zu testen, um ein Mindestmaß an Sicherheit zu realisieren. Dazu werden unterschiedliche Prüfungen vorgenommen. Zunächst wird das Passwort auf seine Länge untersucht, welche eine Mindestgröße aufweisen muss, was wiederum bei der Objekterzeugung definiert wird. Als nächstes wird geprüft, ob es sich bei der Eingabe um gültige Zeichen handelt. Nun folgt ein etwas komplexerer Test, bei dem geprüft wird, ob das Passwort beim zufälligen Rotieren das ursprüngliche Passwort nach n Schritten enthält, was als Sicherheitsrisiko eingestuft wird. Das Modul ermöglicht es somit bereits bei der Passwortvergabe, ein gewisses Maß an Sicherheit herzustellen.

Dimedis::Sql
Dimedis::Sql [4] erleichtert die Realisierung datenbankunabhängiger Applikationen. Die Schnittstelle gliedert sich in drei Kategorien. 1.) Das Ausführen elementarer Kommandos zur Datenein-/ausgabe führen anhand vorgegebener Parameter intern generierte SQL-Statements direkt über das DBI-Modul aus, wobei die Parameter von Datenbankstrukturen unabhängig sind. 2.) Direkte Ausführung von SQL-Statements ohne weitere Manipulation, wobei die verwendeten Statements bereits unabhängig von jeglicher verwendeten Datenbankarchitektur sein müssen. 3.) Generierung von datenbankspezifischen SQL-Codes. Diese Methoden führen keine Statements aus, sondern generieren anhand gegebener Parameter den SQL-Code für eine bestimmte Datenbankplattform und geben diesen zurück, sodass er mit den Methoden der ersten beiden Kategorien weiterverarbeitet werden kann.

Dimedis::Ddl
Dimedis::Ddl [5] ist eine Erweiterung zum zuvor beschriebenen Modul Dimedis::Sql. Es erzeugt DDL-Code zur Erzeugung von Datenbankobjekten wie Tabellen, Indizies etc. Dazu wird das Datenmodell über eine datenbankunabhängige Datenstruktur in Perl beschrieben. Daraus wird anschließend der datenbankspezifische Code generiert. Sie können das Modul direkt oder über ein beigepacktes Kommandozeilen-Interface anwenden.

Image::TestJPG
Mit Hilfe von Image::TestJPG [6] können Sie Grafiken im JPEG-Format auf ihre Gültigkeit testen. Das Modul beinhaltet dazu eine Funktion, welche eine JPEG-Datei sehr schnell dekomprimiert und den Inhalt der Datei auf Fehler untersucht. Sofern ein Fehler gefunden wurde erhalten Sie als Rückgabewert der Funktion ein boolesches 0 (false), andernfalls 1 (true). Eine praktische Anwendung dazu könnte beispielsweise der Test von hoch geladenen Dateien sein, bevor diese an Ihren Zielort abgespeichert werden.

PHP::MySource::Session
Mit PHP::MySource::Session [7] können Sie lesend und schreibend auf PHP 4-Session-Dateien zugreifen. Dabei stehen Ihnen eine Reihe von Methoden zur Verfügung. Anhand einer Session-ID können Sie dabei beispielsweise überprüfen, ob bestimmte User gerade online sind oder gezielt Fehlermeldungen abrufen und entsprechend darauf reagieren.

Image::Imlib2
Image::Imlib2 [8] ist eine Schnittstelle zu Imlib2, einer Library zur Manipulation von Grafiken. Das Modul erlaubt es Grafiken gezielt zu bearbeiten und so beispielsweise ein Polygon zu zeichnen. Der zugrunde liegende Algorithmus erledigt alle Aufgaben äußerst schnell. Beachten Sie beim Testen des Moduls, dass es sich dabei um eine frühe Entwicklerversion handelt, in der nicht alle Funktionen korrekt arbeiten. Eine aber durchaus lohnenswerte Alternative zu den üblichen Grafik-Librarys.

Apache::Description
Apache::Description [9] hilft Ihnen, Beschreibungen in einer .htaccess-Datei anhand der AddDescription-Direktive zu verwalten. Sie können dazu über eine OOP auf diese Information lesend und schreibend zugreifen. Kommentare zu ändern, hinzu zu fügen oder zu editieren wird somit zum Kinderspiel. Zudem können Sie über entsprechende Methoden innerhalb einer Datei mit mehreren Kommentarzeilen bequem vor und zurück navigieren.

Acme::Lingua::Pirate::Perl
Wie nicht anders zu erwarten, wieder einmal ein sinnloses, aber witziges Modul aus der Acme-Reihe. Acme::Lingua::Pirate::Perl [10] ermöglicht es Ihnen, für Perl-Programme einen begrenzten Sprachwortschatz aus dem Piraten-Vokabular anzuwenden. Dazu werden bestimmte Sprachmerkmale von Perl mehr oder weniger zweckentfremdet. Ein kurzer Auszug aus den Möglichkeiten: Die Zuweisung == kann nun als equal, for als be, seize oder steal oder auch plunder für shift, the gold oder doubloons für $_ oder abschließen sound off, yell oder cry für print verwendet werden. Neben diesen und weiterem Wirrwarr können Sie zudem aus einer kurzen Liste von Ausdrücken der Piratenwelt wählen, z.B. Shiver me timbers oder Yo ho! In diesem Sinne: Ahoi!
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.

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