Das Grundgerüst einer Perl/CGI-Anwendung

Von Anfang an wird sich ordentlich um die Fehlerbehandlung gekümmert

Betrachte untenstehenden Code:

#!/usr/bin/perl

use strict;
use warnings;

# Alle Warnungen werfen Exceptions
$SIG{__WARN__} = sub { die @_ };

print eval{ # try
    # alle Prozesse zum Erzeugen
    # der Response, bei Fehlern wird
    # eine Exception geworfen
    header().content();
}           # catch
|| "Content-Type: text/plain; Charset=UTF-8\n\n$@";

Das gezeigte Konstrukt entspricht dem in anderen Programmiersprachen üblichen try/catch, ist aber wie Sie sehen können, mit Perl wesentlich einfacher umzusetzen. Perl's Exception-Modell konsequent angewandt, führt zu einer ausgezeichneten Qualitätssicherung bereits während der Entwicklungsphase. Unterstützt wird das dadurch, dass alle Fehler, also auch die Warnungen in den Status einer Exception erhoben werden.

Über die (Beispiel) Funktionen header() und content() wird die Ausgabe gepuffert. Erstere liefert sämtliche HTTP-ResponseHeader welche sich für die Response je nach Aufgabenstellung ergeben, insbesondere den Content-Type, die zweite Funktion liefert den Message-Body (text/html, image/gif, usw...).

Parsed Header

Was darunter zu verstehen ist: Sie sehen obenstehend ein print "Content-Type: text/html\n\n" was zunächst über STDOUT zum Webserver geht. Tatsächlich können Sie solche Header-Anweisungen auch klein schreiben und anstelle der einfachen Zeilenumbrüche \n(LF) \r\n(CRLF) notieren. Ein standardconformer Webserver wird diese Anweisungen parsen und einheitlich folgendes daraus machen, egal ob Sie den Carriage Return (CR) notiert haben oder nicht:

Content-Type: text/html; Charset=UTF-8
<CRLFCRLF>

Anbieter: nmq​rstx-18­@yahoo.de, die Seite verwendet funktionsbedingt einen Session-Cookie und ist Bestandteil meines nach modernen Aspekten in Perl entwickelten Frameworks.