Linux-Magazin Perl-Snapshots


Nadel im Heuhaufen

Auf dem Comprehensive Perl Archive Network (CPAN) lagert eine schier unglaubliche Fülle an Perl-Modulen. Was man mit ihnen alles anstellen kann, zeigt unsere neue Reihe. In der heutigen Folge geht es um das Indizieren und Suchen mit WAIS.
use CGI qw/:form :html param header/;
use Wais;

Alle Mann an die Pumpen!

Auf dem Comprehensive Perl Archive Network (CPAN) lagert eine schier unglaubliche Fülle an Perl-Modulen. Was man mit ihnen alles anstellen kann, zeigt unsere neue Reihe. In der heutigen Folge geht es um das automatische Installieren von Perl-Modulen mit CPAN.pm.

Balken und Kuchen

Wieviel Plattenplatz hat Michael Schilli zuhause noch auf seinem Rechner frei? Diese Frage interessiert definitiv niemanden. Doch heute soll es darum gehen, Daten mit dem Chart-Package von David Bonner augenfreundlich anzuzeigen - und das gleich auf vier verschiedene Arten!
use CGI;

Eingebettet

Auf dem Comprehensive Perl Archive Network (CPAN) lagert eine schier unglaubliche Fülle an Perl-Modulen. Was man mit ihnen alles anstellen kann, zeigt unsere Perl-Reihe. In der heutigen Folge geht es um eine der vielen Möglichkeiten Perl in HTML-Seiten einzubetten.

Bis in den roten Bereich

Wieviele Seiten schafft mein Web-Server pro Sekunde? Wieviele Clients kann ich mit CGI-Skripts pro Sekunde bedienen? Was bringen die Apache-Beschleuniger fast-cgi und mod_perl wirklich? Ein Testskript simuliert parallel anstürmende Web-Browser und zeigt, wo die Grenzen des eigenen Web-Servers liegen.
use LWP::Parallel::UserAgent;
use Time::HiRes;
use Time::HiRes qw(gettimeofday tv_interval);

Wie von Geisterhand

Erinnert sich noch jemand an expect? Zeichenketten zu senden, um auf Zeichenketten zu warten, um wiederum ... ideal, um über telnet Routinearbeiten auf einem Dutzend Rechner automatisch durchzuführen.
use CGI qw/:standard :html/;
use Net::Telnet;

Aus der CGI-Trickkiste II

Heute, im zweiten Teil, geht's um Formulare und ein simples Online-Order-System. Ein CGI-Skript kann mit CGI.pm dem Client nicht nur den notwendigen HTML-Code senden, sondern sogar die eingegebenen Parameter in Empfang nehmen und wiederum HTML zurückschicken.
use CGI qw/:standard/;
use CGI qw/:standard :html3/;

Clipping-Dienst

In der heutigen Folge unserer Perl-Reihe generieren wir mit einem Clipping-Script die tägliche Zusammenfassung unserer drei Lieblingsseiten.
use HTML::TreeBuilder;
use LWP::Simple qw/get getstore RC_OK/;
use CGI qw/:standard :html3 -noDebug/;

Die Leiden eines Webmasters

Mit dem Perl-Modul File::Find kann man bequem Dateibäume durchlaufen. In dieser Folge unserer Perl-Reihe werden damit Navigations-Balken und Fußzeilen einer ganzen Website auf einen Schlag geändert.
use Getopt::Std;
use File::Find;
use Cwd;

Hurra, Expect ist da!

Wem das klassische TCL-basierte Expect nicht behagt, findet vielleicht Gefallen am neuen Perl Expect-Modul. Damit lassen sich viele interaktive Aufgaben bequem automatisieren.
use Expect;

Aus der CGI-Trickkiste III

Client und Server verständigen sich über das CGI-Protokoll normalerweise ohne daß einer der beiden Partner sich den Zustand des anderen merkt. War derselbe Kunde schon mal da? Keine Ahnung! Aber spätestens falls jemand eine Bestellung in einem Ordersystem abgibt, wäre es vielleicht sinnvoll, den Auftrag einer vorher eingegebenen Kundennummer zuzuordnen - es sei denn, man möchte nichts verkaufen.
use CGI qw/:standard/;
use CGI qw/:standard :html3/;

Aus der CGI-Trickkiste IV

In dieser letzten Folge über CGI-Programmierung mit Perl wird erklärt wie man mit Non-Parsed-Header-Skripts ungepufferte Ausgaben aber auch Server-Pushs realisiert. Abschließend werden Client-Pulls, Umleitungen und Expire-Mechanismen besprochen.
use CGI qw/:standard/;

Kalenderrechnung

Datumsberechnungen halten für den ungeübten Programmierer einige Stolpersteine bereit, doch mit dem neuen Date::Calc-Modul geht alles ganz einfach.
use Date::Calc qw(Delta_Days Today);

Aus der CGI-Trickkiste I

Wer CGI-Skripts mit "use CGI" anfängt, hat es leichter, denn CGI.pm, Lincoln Steins praktisches Modul, holt Query-Parameter ab, verkürzt HTML-Ausgaben, hilft beim Debuggen - ein Tausendsassa in Modulform!
use CGI qw/:standard/;

Testen für Faule

Kein "echter" Programmierer testet gern. Andererseits funktioniert kaum etwas, ohne daß man es testet. Schlimmer noch, ändert sich eine Kleinigkeit, brechen oft ganze Systeme wie Kartenhäuser zusammen. Der Ausweg, der Programmierer-Faulheit genial mit Programm-Zuverlässigkeit vereint, lautet: Regressionstests.
use File::Basename;
use Cwd;
use Test::Suite;
use File::Copy;

Schnüffeln im Schaltschrank des Internet

Wie findet man heraus, welche IP-Adresse zu einem Rechnernamen gehört oder welche Rechner für die EMail-Zustellung einer Domain verantwortlich sind. Diese und weitere Fragen werden in der heutigen Folge unserer Perl-Reihe beantwortet.
use Net::DNS;
use Socket;
use IO::Socket;

... ach, da laufen sie ja!

Wohin laufen die Benutzer auf einer Website? Cookies helfen, die Gewohnheiten der Fans zu erforschen und ihre Wege durch den HTML-Dschungel nachzuvollziehen. Diesmal werden die gesammelten Daten graphisch aufbereitet.
use GIFgraph::pie;
use GIFgraph::bars;
use CGI qw/:standard/;
use Logdata;

Kurzer Prozeß

Ein brandneues Modul bietet eine Perl-Schnittstelle zu allen laufenden Prozessen an - und das auch noch unabhängig vom verwendeten Unix-System! Dies macht den Weg frei für selbstgestrickte Implementierungen von Programmen, die die Auslastung eines Rechners a la 'top' anzeigen: Als kleiner Fünfzeiler, als per Web-Browser aufrufbares CGI-Programm oder als knallbunte graphische Tk-Applikation - alles geht!
use CGI qw/:standard :html3/;
use Tk;
use Proc::ProcessTable;

Déjà-vu, Dejanews?

Dejanews sucht beinahe alle Usenet-Newsgroups nach Stichworten ab. Das heute vorgestellte Skript koppelt sich an die Suchmaschine an und schlägt bei neuen Ergebnissen Alarm.
use File::Basename;
use HTML::TreeBuilder;
use GDBM_File;
use HTTP::Request::Common;
use LWP::UserAgent;

Ja wo laufen sie denn?

Wohin laufen die Benutzer auf einer Website? Cookies helfen, die Gewohnheiten der Fans zu erforschen und ihre Wege durch den HTML-Dschungel nachzuvollziehen.
use CGI qw(:standard);

Da hab' ich dann was eigenes!

Die Installation neuer Perl-Versionen oder Zusatzmodule erfordert normalerweise Root-Rechte. Heute erkunden wir Wege, als normalterbliche Benutzer unsere eigenen Installationen zu verwalten.

Die Rache des Biermanns

Weil's so schön war -- noch eine mathematische Spielerei, die sich mit einem Perl-Skript knacken läßt.

24/7 Adressen-Butler

Perls generische Datenbankschnittstelle DBI bietet einen Treiber an, der SQL-Abfragen auf Datenbestände ohne eine Datenbank zuläßt - ordinäre Dateien speichern die Tabellendaten in komma-separierten Einträgen. Ideal für ein kleines CGI-Adreßbuch!
use CGI::Carp qw/fatalsToBrowser/;
use CGI qw/:standard :html3/;
use DBI;

Jonny Controletti

Ist die neue Perl-Kolumne schon auf der Website des Linux-Magazins? Kann Amazon das neue Buch endlich liefern? Hat ein Anbieter den Preis für den CD-Brenner gesenkt? Der übers Web konfigurierbare Webseitenüberwacher schlägt Alarm, falls sich etwas rührt auf dem Web.
use Algorithm::Diff qw/diff/;
use Storable;
use CGI::Carp qw/fatalsToBrowser/;
use LWP::UserAgent;
use HTML::Entities;
use CGI 2.38 qw/:standard/;

Monty-Hall und andere Probleme

Die bekannte Statistikaufgabe, mit der man selbst Kenner der Szene aufs Kreuz legen kann, läßt sich schnell mit einem Perl-Skript simulieren. Mehr dazu in diesem Artikel.

Bilder-Trickser

Das Modul Image::Magick konvertiert Bilder von einem Format ins andere, schneidet Teile aus, flickt Text hinein, montiert Einzelbilder zu kombinierten Darstellungen, erzeugt animierte GIFs und morpht sogar Übergänge. Alle Achtung!
use Image::Magick;

Wo war gleich nochmal?

Schon länger als zwei Jahre läuft der Perl-Snapshot -- Zeit für eine Suchmaschine, die zu Stichworten die passenden Artikel liefert.
use HTML::TreeBuilder;
use File::Basename;
use File::Path;
use CGI qw/:all/;
use LWP::UserAgent;
use HTML::Entities;
use HTML::FormatText;
use File::Spec;

Zurück nach damals

Es muss nicht immer eine aufwendige X11-basierte Benutzeroberfläche sein, eine textbasierte Applikations tut's oft auch. In der heutigen Perl-Folge wird das klassische Curses-Paket vorgestellt, mit dem sich solche Programme leicht erstellen lassen.
use LWP::Simple;
use ProgressBar;
use Curses;

Die nächste Generation

Bei den regulären Ausdrucken, im Geltungsbereich von Variablen und in der Fehlerbehandlung bietet die kürzlich erschienene Version 5.6 einiges mehr als die Vorgänger. Wir helfen Ihnen, ein paar neue Features schnell in der Praxis anzuwenden.

Spring auf den XML-Zug!

XML eignet sich nicht nur zum Auszeichnen von Webdokumenten sondern ganz allgemein zum Strukturieren beliebiger Datensammlungen. Wie wär's mit einem automatischen Formularausfüller, der seine Weisheit aus XML-Daten bezieht?
use HTTP::Cookies;
use HTTP::Request::Common;
use XML::Parser;
use LWP::UserAgent;
use URI::URL;
use XmlUserAgent;

Loggender Proxy

Was treibt der Browser, während wir browsen? Er sendet Cookies und versteckte Formularfelder und springt nach Redirect-Anweisungen unsichtbar herum. Ein in Perl geschriebener Proxy-Server kommt ihm auf die Schliche.
use HTTP::Daemon;
use URI::Escape;
use LWP::UserAgent;

Verschärfte Suche

Ein kleiner Altavista für die Festplatte gefällig? Das Modul Text::Query sucht in Textdokumenten nach Ausdrücken, ähnlich der Funktionalität der Suchmaschine Altavista.
use Getopt::Std;
use IO::File;
use File::Find;
use Text::Query;

Wer wollte nicht schon einmal auf einer Bergwanderung seine Aktienkurse abfragen? Das heutige Skript kommuniziert per E-Mail mit einem 2-Way-Pager.
use Mail::Internet;
use warnings;
use HTTP::Request::Common;
use HTML::TableExtract;
use LWP::UserAgent;

Buntes mit Hilfestellung

Farbig angezeigte Treffer bei Suchabfragen in Textdateien sehen nich nur hüsch aus, sondern sind auch nützlich. Dazu gibt es ein neues Verfahren, bei Bedarf die Bedienungsanleitung zu einem Skript anzuzeigen.

Spieglein, Spieglein

Um zwei Verzeichnisbäume auf zwei verschiedenen Rechnern synchron zu halten, gibt es Tools wie rdist und rsync, die jedoch nicht überall zur Verfügung stehen. Ein Perl-Modul hilft nach und bietet sogar noch zusätzliche Funktionalität.

Rauf und Runter

Ob Apache oder Datenbank -- alle Dämonen müssen irgendwann rauf- oder runtergefahren werden. Das heute vorgestellte Skript startet Prozesse und schießt sie auf Anforderung ab.

Dr. Zeichen und Mr. Byte

Perls Version 5.6.0 bringt Unicode-Unterstützung, die nicht nur für Multibyte-Zeichen fernöstlicher Alphabete taugt, sondern sich sogar für Versionsnummern und IP-Adressen zweckentfremden lässt.
use POSIX;
use CGI qw(:all);
use utf8;

Mehr XML

Wie versprochen: Heute gibt's die Testsuite, die in XML spezifizierte Testfälle durchackert und Live-Ergebnisse mit Erwartungswerten vergleicht.
use HTTP::Cookies;
use XML::Parser;
use XmlTestSuite;
use IO::File;
use constant COLUMN_WIDTH => 40;
use Cwd;
use XmlUserAgent;

Danke für den Fisch

Wer auf altavista.com auf den Translate-Knopf drückt, erhält das Web-Formular zu Babel Fish, einem Programm, das ein halbes Dutzend Sprachen versteht und ganze Sätze übersetzen kann. Nun steckt die maschinelle Übersetzungskunst seit Jahrzehnten in den Kinderschuhen und es ist noch kein Durchbruch in Sicht, also ist das Ganze nicht ganz ernstzunehmen. Dennoch: In Sprachen, in denen man nur "Guten Tag" und "Ein Bier bitte" sagen kann, kann der Babel Fish helfen.