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.
PerlSkriptingWeb-AutomatisierungSeit 1987
Bestehende Perl- und CGI-Systeme zuverlässig weiterbetreiben, Risiken sichtbar machen und nur das modernisieren, was wirklich geändert werden muss.
1987 · Perl 1.0
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
#!/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
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
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
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.
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.
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.
1. Upload script.pl in ASCII mode
2. chmod 755 script.pl
3. Edit $MAILPROG at the top
# upgrades: none. patching: manual.
Die Installation bestand aus Download und Texteditor. Ob die eigene Kopie eine bekannte Schwachstelle hatte, ließ sich nicht zuverlässig feststellen.
requires 'Mojolicious', '>= 9.0';
requires 'JSON::PP';
# cpanm --installdeps . ; audit against advisories
Erst eine deklarierte Abhängigkeitsliste macht Sicherheitshinweise praktisch nutzbar. Das Manifest zeigt, welche Version tatsächlich geprüft oder aktualisiert werden muss.
print "<p>$comment</p>\n";
# correct only when $comment happens to be safe
Ausgaben mussten in jedem Zweig von Hand maskiert werden. Eine Stelle zu übersehen war leicht – und entsprechend häufig.
<p><%= $comment %></p>
# <%= %> escapes; <%== %> is the deliberate opt-out
Der sichere Weg ist heute der kurze Weg. Diese Umkehr ist wichtiger als die Wahl eines einzelnen Frameworks.
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
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
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.
| Gruppe | Status | Normalisiert | Begrü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
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.
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.
Eine Aufgabe, zwei Umsetzungen und eine Entscheidungsmatrix mit klaren Grenzen.
Redaktionell geprüft
Vier Risikoklassen in neunzig Zeilen, danach eine Neufassung mit gleichem Verhalten und modernerem Ausführungsmodell.
Redaktionell geprüft
Ein Modul aus der Standarddistribution zu entfernen ist eine Wartungsentscheidung, kein Urteil über den Code.
Redaktionell geprüft
Methode, Stichprobe und eine klare Aussage dazu, welche Zahlen nicht belastbar sind.
Redaktionell geprüft
Zeitleiste · 1987 → offen
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.
SpracheGeprüft
Eine Sprache für Aufgaben, die zuvor awk, sed, sh und ein C-Programm verbinden mussten.
WebUngeprüft
Programme können das Web erzeugen, sobald sie Umgebungsvariablen lesen und auf stdout schreiben.
ÖkosystemGeprüft
Ein Vorbild für viele spätere Paket-Ökosysteme – einschließlich Spiegelservern.
WebDatum ungeprüft
Hashref hinein, Arrayref heraus – Perl-Webanwendungen werden vom ausführenden Server unabhängig.
HeutePerlCodersOffener Knoten
Alles danach ist offen. Korrekturen und Beiträge bestimmen, was als Nächstes entsteht.
Archiv
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.
Eine datierte Aufnahme von 2003 dokumentiert ein Webring-Verwaltungsskript mit manueller oder automatischer Freigabe.
Erhalten sind nur der historische Name und die URL. Eine aktuelle Sicherheitsprüfung oder ein Advisory liegt nicht vor; einen Download gibt es nicht.
Eine zeitgesteuerte Bildergalerie mit Thumbnail-Erzeugung, belegt durch eine datierte Aufnahme und einen erhaltenen Forenlink.
Pulse
PerlCoders ist 2026 neu gestartet. Statt leerer Foren und künstlicher Reaktionszahlen zeigen wir, wobei Unterstützung gerade wirklich hilft.