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;
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.
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;
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.
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);
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;
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/;
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/;
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;
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;
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/;
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/;
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);
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/;
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;
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;
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;
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;
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;
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);
Die Installation neuer Perl-Versionen oder Zusatzmodule erfordert
normalerweise Root-Rechte. Heute erkunden wir Wege, als normalterbliche
Benutzer unsere eigenen Installationen zu verwalten.
Weil's so schön war -- noch eine mathematische Spielerei, die sich mit
einem Perl-Skript knacken läßt.
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;
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/;
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.
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;
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;
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;
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.
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;
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;
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;
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.
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.
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.
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;
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;
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.