PerlSkriptingWeb-AutomatisierungSeit 1987

Perl-Systeme warten. Schritt für Schritt modernisieren.

Bestehende Perl- und CGI-Systeme zuverlässig weiterbetreiben, Risiken sichtbar machen und nur das modernisieren, was wirklich geändert werden muss.

Eine Anfrage, vier Epochen

durch die Zeitleiste

ganze Zeitleiste: 1987 → offen →

1987 · Perl 1.0

noch keine Anfrage Vor dem Web
Gebaut für
Berichte, Textextraktion und Systemverknüpfung
Läuft auf
Unix-Systemen mit Shell und C-Compiler
Das Web
existiert noch nicht

Hier gibt es noch keine Webanfrage. 1987 liegt der Vorschlag für das Web noch zwei Jahre in der Zukunft. Perl wurde für Text und Systemverknüpfung gebaut. Deshalb war die Sprache bereits auf vielen Rechnern vorhanden, als das Web entstand.

1997 · CGI.pm wird Teil des Perl-Kerns

hello.cgi Prozess je Anfrage
#!/usr/bin/perl
use CGI;
my $q    = CGI->new;
my $name = $q->param('name');

print $q->header('text/html');
print "<h1>Hello, $name</h1>";← nicht maskiert

Das Web wird beschreibbar. Der Server startet für jede Anfrage einen Prozess, führt Perl aus, liest die Antwort von der Standardausgabe und beendet den Prozess. Zeile 7 schreibt den Parameter unmaskiert ins Markup – ein typisches Risiko dieser Zeit.

ca. 2009 · PSGI und Plack

app.psgi Schnittstelle, kein Framework
use Plack::Request;

my $app = sub {
    my $req  = Plack::Request->new(shift);
    my $name = $req->parameters->{name} // 'world';

    return [ 200, ['Content-Type' => 'text/plain'], ["Hello, $name\n"] ];← die ganze Schnittstelle
};

Hashref hinein, Arrayref heraus. Der Rückgabewert in Zeile 7 enthält Status, Header und Body. Mehr verlangt die Schnittstelle nicht. Die Anwendung ist damit vom ausführenden Server getrennt – genau das fehlte im CGI-Modell.

Heute · Mojolicious::Lite auf PSGI

app.pl Dauerhaft geladener Interpreter
use Mojolicious::Lite -signatures;

get '/hello' => sub ($c) {
    my $name = $c->param('name') // 'world';
    $c->render(json => { hello => $name });← kodiert statt zusammengesetzt
};

app->start;

Gleiche Anfrage, gleicher Parameter, acht Zeilen. Entscheidend ist nicht die Syntax: Der Interpreter bleibt zwischen Anfragen geladen, die Antwort wird kodiert statt als String zusammengesetzt, und dieselbe Datei läuft unter jedem PSGI-Server.

Damals / Heute

Die Muster änderten sich weniger als die Technik darunter.

Drei Gegenüberstellungen zeigen ein historisches Muster neben der heutigen Lösung. Alle Inhalte stehen auch ohne JavaScript im Dokument; die Tabs bestimmen nur, welches Paar oben liegt.

Ein Prozess je Anfrage c. 1993–2005
httpd.confDamals
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
# every hit: fork, exec, compile, run, exit

Jede Anfrage bezahlte Start und Kompilierung neu. Die Zahl paralleler Prozesse begrenzte den Durchsatz – unabhängig davon, wie klein die eigentliche Aufgabe war.

Dauerhaft geladene Anwendung Heute
shellHeute
plackup -s Starman --workers 4 app.psgi
# compile once, serve many

Die PSGI-Schnittstelle ist vom Server getrennt. Starman gegen einen anderen Server auszutauschen ist eine Änderung am Startbefehl, keine Neuentwicklung.

Anfrageweg damals und heute Zwei Reihen zeigen den Anfrageweg. 1997 startet httpd für jede Anfrage einen neuen Perl-Prozess. Heute übergibt ein PSGI-Server die Umgebung an eine bereits geladene Anwendung, die Status, Header und Body zurückgibt. C. 1997 — ONE PROCESS PER REQUEST Browser httpd perl (new process) Antwort GET fork/exec stdout exits after one reply NOW — ONE INTERPRETER, MANY REQUESTS Browser PSGI server app (resident) Antwort GET $env arrayref stays loaded for the next one
Von links nach rechts lesen. Beide Reihen zeigen vier Schritte: Anfrage hinein, Status, Header und Body zurück. Der Unterschied ist der Ort des Interpreters. CGI startet und kompiliert bei jedem Aufruf neu; PSGI bezahlt diesen Aufwand einmal beim Start.

Aktueller Stand · redaktionell geprüft, belegt oder als offen markiert

So funktioniert die Prüfung
  • Aktuelle stabile Perl-Version

    Perl 5.44.0

    Geprüft am 12. Aug. 2026 perl.org releases

  • Neuester Eintrag zu Ökosystem oder Sicherheit

    Redaktionelle Prüfung ausstehend

    Ungeprüft CPAN Security Group

  • Zuletzt getestetes Beispiel

    Noch kein CI-Lauf dokumentiert

    Ungeprüft öffentliches Quell-Repository

  • Letzte Website-Aktualisierung

    Astro-Produktionsbuild – kanonische Routen, Zeitleiste, Labs und öffentliche Quellen

    Geprüft Changelog

Zwei der vier Felder haben noch keinen verifizierten Wert. Jede Zeile nennt die zu prüfende Aussage und die vorgesehene Quelle, statt die Lücke mit einer erfundenen Zahl zu füllen.

Sprache passend zur Aufgabe wählen

Was soll entstehen? Perl ist nicht immer die beste Wahl.

Wähle die Art der Aufgabe. Du erhältst eine begründete Einordnung mit sichtbarer Sicherheit und einem Hinweis, wann die Empfehlung nicht passt.

Ausgewähltes Werkzeug · Prototyp

Legacy URL Mapper

Füge eine Liste alter URLs ein. Das Werkzeug normalisiert sie, gruppiert Query-Muster, markiert Duplikate und mögliche Mehrfach-Zuordnungen. Danach exportierst du die CSV und triffst die Entscheidungen selbst.

Datenverarbeitung Alles läuft im Browser. Die URLs werden weder hochgeladen noch protokolliert oder gespeichert. Nach dem Laden der Seite gibt es keine Serveranfrage und keinen Eintrag im lokalen Speicher.

Beispiel · 5 URLs hinein, 3 Gruppen heraus

Statische Vorschau
Beispielausgabe des Legacy-URL-Mappers mit drei Gruppen: eindeutig, Duplikat und manuelle Prüfung.
GruppeStatusNormalisiertBegründung
G001 Eindeutig /main/scripts.html?script=SimpleRing Eine URL, ein Wert. Das Ziel muss trotzdem geprüft werden.
G002 Duplikat /main/scripts.html?script=TotalAVS Pro Zwei Eingaben werden identisch normalisiert: %20 und +. Eine kanonische Form behalten.
G003 Manuell prüfen /main/scripts2.html?script=… Zwei verschiedene Werte teilen Pfad und Signatur. Eine Zusammenführung wäre mehrdeutig.

„Eindeutig“ bedeutet nicht „richtig“. Das Werkzeug bewertet nur die eingegebene Liste. Es ruft keinen Statuscode ab und behauptet nicht, dass eine Weiterleitung korrekt ist.

Lesen

Aktuelle Praxis, ehrliche Vergleiche und die Geschichte dahinter.

Fünf veröffentlichte Beiträge führen in die Bereiche. Die Fachartikel sind derzeit auf Englisch; Entwürfe bleiben mit ihrem tatsächlichen Status in den jeweiligen Übersichten.

HeuteAnleitung11 Min.Beispiele nicht in CI getestet

HTTP-Anfragen mit Perl im Jahr 2026

HTTP::Tiny gehört zum Kern. Mojo::UserAgent lohnt sich, wenn Parallelität oder ein DOM gebraucht werden. Der Beitrag erklärt die praktische Grenze.

Zeitleiste · 1987 → offen

Die Spur endet nicht in den Neunzigern.

Siebzehn Ereignisse in fünf Spuren zeigen, was sich änderte und was geblieben ist. Bei fünfzehn Einträgen ist der Prüfstatus sichtbar. Der letzte Knoten bleibt bewusst offen.

  1. SpracheGeprüft

    Perl 1.0 wird im Usenet veröffentlicht

    Eine Sprache für Aufgaben, die zuvor awk, sed, sh und ein C-Programm verbinden mussten.

  2. WebUngeprüft

    CGI entsteht rund um NCSA httpd

    Programme können das Web erzeugen, sobald sie Umgebungsvariablen lesen und auf stdout schreiben.

  3. ÖkosystemGeprüft

    CPAN geht online

    Ein Vorbild für viele spätere Paket-Ökosysteme – einschließlich Spiegelservern.

  4. WebDatum ungeprüft

    PSGI and Plack

    Hashref hinein, Arrayref heraus – Perl-Webanwendungen werden vom ausführenden Server unabhängig.

  5. HeutePerlCodersOffener Knoten

    PerlCoders startet als unabhängige Publikation neu

    Alles danach ist offen. Korrekturen und Beiträge bestimmen, was als Nächstes entsteht.

Archiv

Historische Einträge, damit alte Links an einem ehrlichen Ziel landen.

Das sind keine aktuellen Produkte. Nichts davon ist verfügbar, unterstützt oder empfohlen; Binärdateien und Quellcode werden nicht weitergegeben. Die Einträge bestehen, weil alte Verzeichnisse noch auf diese URLs verweisen.

EingestelltCGI-Skript

SimpleRing

Eine datierte Aufnahme von 2003 dokumentiert ein Webring-Verwaltungsskript mit manueller oder automatischer Freigabe.

  • /main/scripts.html?script=SimpleRing

EingestelltCGI-Skript

BannerFarm

Erhalten sind nur der historische Name und die URL. Eine aktuelle Sicherheitsprüfung oder ein Advisory liegt nicht vor; einen Download gibt es nicht.

  • /main/scripts.html?script=BannerFarm

EingestelltDokumentiert

SimleGallery

Eine zeitgesteuerte Bildergalerie mit Thumbnail-Erzeugung, belegt durch eine datierte Aufnahme und einen erhaltenen Forenlink.

  • /main/scripts2.html?script=SimleGallery

Pulse

Noch gibt es keine Community-Aktivität. Deshalb zeigen wir auch keine erfundene.

PerlCoders ist 2026 neu gestartet. Statt leerer Foren und künstlicher Reaktionszahlen zeigen wir, wobei Unterstützung gerade wirklich hilft.

  1. 01 Frage stellen Die Antwort erscheint in Pulse oder als Anleitung – auf Wunsch mit Namensnennung. Ohne redaktionelle Prüfung wird nichts veröffentlicht.
  2. 02 Korrektur melden Besonders hilfreich sind Primärquellen zu Einträgen, die in der Zeitleiste als ungeprüft markiert sind.
  3. 03 Historisches Fundstück einreichen Alte Skripte, Screenshots oder Mailinglisten-Auszüge brauchen Rechteangaben. Ohne diese dokumentieren wir nur den Verweis und zeigen das Material nicht.