Perl-Programmierung: Nützliche Module


Vorbemerkung

Bearbeiten

In diesem Abschnitt werden nützliche Module vorgestellt, die Programmieraufgaben erheblich erleichtern.

Term::ANSIColor

Bearbeiten

Dieses Modul ermöglicht die Ausgabe auf der Kommandozeile einzufärben, um so die Übersichtlichkeit der Ausgabe zu steigern. Ein Programmbeispiel:

#!/usr/bin/perl -w
# Programm zur Demonstration der eingefärbten Kommandozeilenausgabe.

use Term::ANSIColor;

print colored("Hallo Welt \n",'Bold Blue');

Das Programm gibt Hallo Welt in einem satten Blau aus. Die Farbgebung ist sehr assoziativ, so würde zum Beispiel 'Yellow on_magenta' ebenfalls als Farbgebung funktionieren. Weitere Informationen stehen in der Anleitung.

perldoc Term::ANSIColor

Das Modul sollte nur verwendet werden, wenn eine unterschiedliche Farbgebung sinnvoll ist. Auf diese Weise werden Netzhautschäden beim Benutzer des Programms vermieden, was diesen sicherlich freut.

Data::Dumper

Bearbeiten

Wer kennt das nicht, man hat komplizierte Datenstrukturen und irgend etwas stimmt damit nicht. Wenn man jetzt nur die Möglichkeit hätte, diese Struktur auszugeben. Ein 'print $hash' liefert leider nur so etwas unverständliches wie 'HASH(0x814cc20)'.

Hier kann das Modul Data::Dumper helfen. Es importiert automatisch eine Funktion Dumper, die beliebige skalare Werte ausgeben kann (auch mehrere davon) und sogar mit Zyklen in der Datenstruktur zurechtkommt. Dazu ist die Ausgabe sehr gut lesbar. Hier ein Beispiel mit einer einfacheren und einer komplizierten Struktur:

use Data::Dumper;

my $simple = { a => 1 };

my $complicated = [ sub { ucfirst(shift) }, $simple ];
		    
push @$complicated, $complicated;

print Dumper($simple, $complicated);

Die erste Variable ($simple) ist einfach nur eine Hashreferenz, die zweite Variable ($complicated) arbeitet mit Codereferenzen und beinhaltet einen Zyklus. Bei der Ausgabe benennt Dumper die Variablen mit einem automatisch generierten Wert und benutzt diesen, um Zyklen und Verweise auf bereits dargestellte Inhalte zu verdeutlichen. Hier die Ausgabe des obigen Programms:

$VAR1 = {
          'a' => 1
        };
$VAR2 = [
          sub { "DUMMY" },
          $VAR1,
          $VAR2
        ];

Natürlich kann Dumper den Variablen noch vom Nutzer vorgegebene Namen geben oder die Rekursivtiefe der Darstellung begrenzen, diese und noch viele anderen Informationen sind in der Manualpage zu finden, einfach:

perldoc Data::Dumper

aufrufen.

Für mich ist Data::Dumper ein unentbehrliches Werkzeug und ein 'die Dumper($var)' ist ein schnelles Mittel um Probleme mit den Datenstrukturen zu finden.

File::Slurp

Bearbeiten

Dieses Modul beinhaltet Funktionen um eine Datei in einem Rutsch einzulesen oder zu schreiben. Es ist entstanden, weil diese Funktionen an unzähligen Stellen in Perlprogrammen und -modulen vorkommen. Außerdem ist die slurp-Funktion Bestandteil des kommenden Perl6, so daß man seinen Code schon für diese kommende Version vorbereiten kann.

Ein kleines Beispielprogramm das einen Textdatei neu formatiert. Warnung: nicht zur Verwendung mit wichtigen Textdateien vorgesehen!

     ; use strict; use warnings; use utf8
     
     ; use Text::Wrap  qw(wrap)
     ; use File::Slurp qw(slurp write_file)
     ; use IO::File
     
     ; my $x=@ARGV
     ; my $columns=72;
     
     ; if($x==2)
         { $columns = shift @ARGV }
       elsif($x==0)
         { print STDERR "$0 [columns] file\n"
         ; exit 1
         }
         
     ; my $filename=shift @ARGV
     ; my @file
       
     ; { # Read in
       ; my $in=new IO::File "<$filename" or die "$filename is unreadable\n"
       ; @file=slurp($in)
       }
     
     ; { # write out
       ; my $out=new IO::File ">$filename" or die "$filename is unwritable\n"
       ; $Text::Wrap::columns=$columns
       ; write_file($out, wrap('','',@file))
       }

Module::CoreList

Bearbeiten

Mit dem Befehl corelist ModulName kann man abfragen ob und ab wann das Modul ModulName zur Standardinstallation von Perl gehört.

Module::Starter

Bearbeiten

Liefert ein Gerüst für eigene Module.

Task::Kensho

Bearbeiten

Liste von Modulen, die von der Enlightened Perl Organization empfohlen werden.

WWW::Mechanize

Bearbeiten

Automatische Verarbeitung von Webseiten.

Vernünftige Objektorientierung.

Getopt::Long

Bearbeiten

Verarbeitung von Kommandozeilenparameter