Fehler: Es wurde keine Seitenindex gefunden.

xwolf.de|com

Menü

Inhalt dieser Site

Ansicht

Individuelle Benutzerkonfiguration für die Site.

Druckansicht Startseite Suchen

A A A A

Modul web.pm

Dieses Perl-Modul enthält einige hilfreiche Routinen für die Erstellung von Webdokumenten und zur Verarbeitung von CGI-Programmen. Das Modul basiert auf ähnliche Routinen aus den Modulen CGI, HTML, HTTP und den Libraries cgi-lib.pl und cgi-library.pl. Diese sollen durch das Modul web nicht ersetzt, aber ergänzt oder verbessert werden.
Ein Ziel bei der Erstellung des Moduls, war, die Routinen so einfach wie möglich zu machen, damit auch Anfänger leicht damit umgehen können, ohne vorher viel mehr als die Grundlagen der Perl-Programmierung beherrschen zu müssen.

Source Code

web - Version 1.45
web.pm
[Direkter Download]
Das Modul web
readme.txt
[Direkter Download]
Informationen zur Installation
web-1.45.tar.gz
[Direkter Download]
Modul, gepackt in tar und gz. (Entpacken via tar -xzf web-1.45.tar.gz)
(Zum Download clicken Sie auf den Link und betätigen Sie 'Save as..' nach dem Laden, oder gehen Sie mit der Maus auf den Link und nutzen Sie die 'Save Link as..'-Funktion Ihres Browsers.)

Installation

Kopieren Sie die Datei web.pm in das Perl Library Verzeichnis (z.B. /usr/perl5/lib) oder in ein eigenes Verzeichnis für Libraries und Module.
Dann binden Sie das Modul mit den folgenden Aufruf in ihre Programme ein:

use web;

Sollten Sie keine Rechte haben, die Datei in das Perl Library Verzeichnis zu kopieren, rufen Sie das Modul folgendermaßebn auf:

use lib '/pfad/zu/dem/modul';
use web;

Funktionen

Folgende Funktionen bietet das Modul an:
Add_Days_to_Date() Addiert eine Zahl von Tagen zu einem Datum. Erstes Argument ist das Datum, wie "1.2.2000", zweites Argument die Zahl der zu addierenden Tage, wie "28". Das Ergebnis hat Datumsformat, wie "1.3.2000" in diesem Fall.
Check_Name() Löscht alle Sonderzeichen aus einem String, mit dessen Hilfe ein Perlprogramm in einem System- oder open()-Aufruf zu ungewollten Aktionen gezwungen werden kann.
Fehlermeldung() Gibt eine Fehlermeldung aus. Dieser Funktionen läßt sich eine Layout-Datei übergeben, in der angegeben ist, auf welche Weise die Fehlermeldung ausgegeben wird.
GetPassedDaysbyMonth() Liefert die Zahl der Tage zurück die vergangen sind bis zum Erreichen der eingegebenen Monatsnummer.
GetSentence() Liefert auf eine Wortsuche in einem Text den Satz ersten Satz zurück, in dem sich das Wort befindet.
GetYearDay() Berechnet aus einem gegebenen Datum, welcher Tag des laufenden Jahres es ist.
GetWeekDay() Berechnet aus einem gegebenen Datum den Wochentag.
GetDatebyYday() Berechnet aus einem gegebenen Jahrestag das dazugehörige Datum. Z.B. die Eingabe 32 (im Jahr 1999) führt zum Ergebnis 1.2.1999.
Get_Seconds() Gibt aus einer eingegebenen Zeit die Zahl der Sekunden wieder, die seit Mitternacht vergangen sind.
HtmlTop() Gibt einen Satz an Default-HTML-Tags für den Kopf eines HTML-Dokumentes zurück. Als Argument sollte der Titel des Dokumentes übergeben werden.
HtmlBot Gibt einen Satz an Default-HTML-tags für das Ende eines HTML-Dokumentes zurück.
isDatum() Überprüft die Eingabe nach korrekter Datums-Syntax (TT.MM.YYYY).
isIP() Überprüft die Eingabe nach korrekter IP-Syntax.
isLeapYear() Liefert TRUE, wenn das Argument ein Schaltjahr ist.
isURL() Überprüft die Eingabe nach korrekter URL-Syntax.
isMail() Überprüft die Eingabe nach korrekter Mail-Syntax.
isZeit() Überprüft die Eingabe nach korrekter Zeit-Syntax (HH:MM:SS).
NLock() Setzt ein Dateilock ohne die Perlfunktion flock().
Im Gegensatz zu flock() arbeiten NLock() und NUnlock() jedoch über NFS-Grenzen hinweg, da ein atomarer Link als Lock gesetzt wird.
Zusätzlich zum reinen Locking besitzt dieser ein Alterungsmechanismus, der dafür sorgt, daß ein Dateilock, welcher älter ist als eine vorgegebene Anzahl von Sekunden, beseitigt wird.
Nlock() gibt 1 bei Erfolg, 0 bei Mißerfolg zurück.
NUnlock() Beseitigt ein durch NLock() gesetztes Dateilock.
NUnlockAll Beseitigt alle Locks, die mit NLock() gesetzt wurden.
PrintHeader Gibt den Content-type "text/html" zurück.
Die Funktion PrintHeader() kann nunmehr auch optional Cookies zurück- oder neu setzen.
Aufrufparameter:
  • ohne Parameter: Wie bisher Rückgabe des Content-Types.
  • 1. Argument: Aktiviert das Setzen von Cookies, so vorhanden. Falls im 3. Argument keine Cookie-Referenz angegeben wird, werden die Cookies, die durch die Environmentvariable $ENV{'HTTP_COOKIE'} gelesen wurden, neu gesetzt.
  • 2. Argument: Falls PrintHeader() bereits ausgeführt wurde, kann durch setzen dieses Parameters auf einen Wert ungleich 1 verhindert werden, das PrintHeader() abbricht. (PrintHeader() wird per Default nur einmal ausgeführt.)
  • 3. Argument: Referenz auf einen Hash mit den Cookiewerten.
  • 4. Argument: Pfadangabe. Per Default auf "/".
  • 5. Argument: Lebenszeit der Cookies in Tagen. Per Default auf 30.
ReadParse Ließt Eingaben aus dem STDIN und/oder der Environment-Variable QUERY_STRING ein, wandelt die Netz-Sonderzeichen um und schreibt die Daten in einem Hash aus.
Read_Parafile() Liest eine Standard-Unix-Parameterdatei ein und schreibt die Daten in einen Hash aus.
ReadLayout() Ließt eine Datei und gibt diese in einem Array zurück.
Redirect() Läßt den Server eine Redirection zu einer anderen URL durchführen.
RemoveHTML() Beseitigt alle HTML-Tags und ersetzt HTML-Sonderzeichen.
ReturnFlagContent() Gibt aus einem eingebenen HTML-Text und einem Tag als Argument all das zurück, was im Text zwischen den Beginn des Tags und dessen Ende liegt.
ReplaceText() Ersetzt in einem vorgegebenen Quelltext #TEXT# mit einem anderen Text. Sofern im Quelltext viele Zeilenumbrüche vorkommen, ist diese Routine schneller als normales Suchen und Ersetzen mit Regular Expressions.
WriteLog() Schreibt Text mitsamt Datum und Rechneradresse in eine vorgegebene Datei.

Änderungen / Updates

Version 1.36 - 1.45 Diverse Bugfixes und Verbesserung der Codeeffizienz.
Es wurden kleine Bugfixes durchgeführt, die jedoch kaum merkbare Auswirkungen haben.
Desweiteren kam es durch die Hilfe von Harald Mattern zur wesentlichen Effizienzverbesserung in den Subroutinen GetWeekDay(), GetYearDay() und isLeapYear().
Version 1.33 - 1.35 Codeerweiterung und neue Funktion GetPassedDaysbyMonth().
Die Funktion GetPassedDaysbyMonth() nimmt die Nummer eines Monats an und berechnet daraus die Zahl der Tage die bis zum Erreichen des Monats vergangen sind.

Die Funktion PrintHeader() kann nunmehr auch optional Cookies zurück- oder neu setzen.
Aufrufparameter:
  • ohne Parameter: Wie bisher Rückgabe des Content-Types.
  • 1. Argument: Aktiviert das Setzen von Cookies, so vorhanden. Falls im 3. Argument keine Cookie-Referenz angegeben wird, werden die Cookies, die durch die Environmentvariable $ENV{'HTTP_COOKIE'} gelesen wurden, neu gesetzt.
  • 2. Argument: Falls PrintHeader() bereits ausgeführt wurde, kann durch setzen dieses Parameters auf einen Wert ungleich 1 verhindert werden, das PrintHeader() abbricht. (PrintHeader() wird per Default nur einmal ausgeführt.)
  • 3. Argument: Referenz auf einen Hash mit den Cookiewerten.
  • 4. Argument: Pfadangabe. Per Default auf "/".
  • 5. Argument: Lebenszeit der Cookies in Tagen. Per Default auf 30.
Version 1.31 - 1.32 Neue Funktion isIP() sowie Fehlerkorrekturen.
Die neue Funktion isIP() erlaubt ein Syntaxcheck für IP-Adressen. Weiterhin wurden Fehler in den Funktionen Add_Days_to_Date() und GetDatebyYday() korrigiert.
Mit Add_Days_to_Date() kann man nun auch Tage abziehen.
Version 1.30 Codeverschönerung....
Der Code wurde der CPAN-Notation angepasst. Keine funktionellen Änderungen.
Version 1.29 Neue Funktion Redirect().
Mit Hilfe dieser URL kann man den Webserver anweisen, auf eine andere URL weiterzuleiten.
Version 1.28 Es wurden drei neue Routinen eingebaut:
  • Add_Days_to_Date(), welches eine Datumsadditions durchführt,
  • HtmlTop(), welches die ersten HTML-Tags eines Web-Dokumentes
  • HtmlBot, welches die letzten HTML=Tags zurückgibt.
Die letzten beiden Routinen wurden eingebaut, um den Wechsel von cgi-lib.pl auf das Modul zu erleichtern.
Version 1.27 Neue globale Variable $web::errorlayout_file.
Möchte man mit der Funktion Fehlermeldung() Fehlerausgaben machen, so kann man jedesmal die optionale Angabe der Layout-Datei als drittes Argument mitgeben. Wenn man sich dies ersparen will, reicht es, beim Start des Programmes den Dateinamen der Variable $web::errorlayout_file zuzuweisen. In diesem Fall wird -so die Datei lesbar ist- diese verwendet um die Fehlerausgaben im Design anzupassen.
Die Layout-Datei kann folgende Variablen besitzen:
  • #ZEIT# - wird ersetzt durch die aktuelle Systemzeit.
  • #VERSION# - gibt die Versionsnummer aus, die in $web::VERSION gegeben ist.
  • #ERRORTEXT#, #SYSTEMMELDUNG#, #SYSTEMMESSAGE# - gibt den Fehlertext aus, d.h. das erste Argument.
  • #TITEL#, #TITLE# - Ausgabe des zweiten Arguments.
  • #{Envrionment-Variable}# - Ausgabe der jeweiligen Environment-Variable. Bsp: #REMOTE_HOST#.
Version 1.26 Bug in isLeapYear() korrigiert.
Als ich die Funktion zum ersten mal schrieb, dachte ich, alle 4 Jahre ist Schaltjahr, was aber nicht stimmt. Korrekt ist: Alle 4 Jahre, wenn das Jahr nicht gleichzeitig durch 100 teilbar ist. Wenn es durch 100 teilbar ist, ist es aber in dem Fall doch ein Schaltjahr, wo es durch 400 teilbar ist.
Die Korrektur ist sofort wirksam. Programme, die auf die Funktion zugreifen, brauchen nicht geändert werden.
Version 1.25 Verbesserung für die Funktion ReadParse.
Beim Upload wird die temporäre Datei mit den Inhalt der neuen Datei nun anders gespeichert.
Version 1.24 Neue Variable $web::OS.
Das Modul prüft jetzt, welches Betriebssystem vorhanden ist. Damit ist es jetzt auch uneingeschränkt für Windows-Systeme tauglich; Dort gab es bisher Probleme mit den Funktionen NLock() und NUnlock(), da die Perlfunktionen link() und unlink() auf Windows nicht funktionieren.
Wird nun in den Locking-Routinen festgestellt, daß es sich um ein Windows-System handelt, wird die Locking-Funktion mit dem Ergebniswert TRUE abgebrochen.
Version 1.23 Neue Funktion isLeapYear().
Diese Funktion liefert TRUE, falls das übergebende Jahr ein Schaltjhar ist, bzw. falls kein Argument gegeben wurde, ob das laufende Jahr eines ist.
Version 1.21 - 1.22 Neue Funktion NUnlockAll.
Hat man mehrere Datei-Locks mit der Funktion NLock() gesetzt, kann man mit einem Schlag alle Locks aufheben, indem man die Funktion NUnlockAll aufruft.
Diese Funktion nutzt einen globalen Hash %web::lockliste, welche auch vom Programm abgefragt werden kann.

Neue Funktion RemoveHTML().
Mit Hilfe dieser Funktion lassen sich alle HTML-Tags und Spezifikationen aus einem String entfernen.

Version 1.20 Neue Funktion GetSentence().
Diese Funktion erlaubt das Parsen eines Textes nach Sätzen. Bei Eingabe eines langen Textes mit mehreren Sätzen und eines Suchwortes, erhält man als Ergebnis den ersten vollständigen Satz, in dem sich das Suchwort befindet.


Info

$Id: index.shtml,v 1.2 2003/05/20 20:55:33 xwolf Exp $
© 1996 - 2003 by xwolf - xwolf ist eingetragene Marke beim Deutschen Patent- und Markenamt (Nr. 301 04 380)