Ok, Beispiel:
#!/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$@";
sub header{
  "Content-Type: text/html; Charset=UTF-8\n\n";    
}
sub content{
  local $/ = undef;
  <DATA>
}
__DATA__
<!doctype html>
<header>
  <title> Titel der Seite </title>
</header>
<html>
<body>
    <p>Asdf usw.</p>
</body>
</html>
AEG.
PS: Zum Testen wirf mal im oberen Teil eine ex wie die 123 oder die "ex\n" un guck mal was dann im Browser rauskommt.
 nicht angemeldet
 nicht angemeldet 1211chef
 1211chef